Professional Documents
Culture Documents
El dialogo de organizacion de macros contiene diferentes areas de produccion de macros. Las macros se pueden observar en tres niveles:
Esto quiere decir que tu macro estara en cada nivel representando algunas ventajas y desventajas.
Contents
[hide]
1 Hola Mundo 2 Variables 3 Ejemplo 1: Copiar Todas las celdas y pegarlas en una hoja nueva 4 Ejemplo 2: Configura una tabla para que tenga un ancho de columna optima
Hola Mundo
OpenOffice.org no tiene una salida estandar (stout) por que es una aplicacion de GUI asi que debemos basarnos en funciones como msgBox para poder sacar el resultado.
REM ***** BASIC *****
Variables
Ahora pondremos un juego sencillo de variables donde primero declaramos las variables usando Dim y despues asignandole un valor numerico.
REM **** VARIABLES **** Sub Dim Dim Dim Main a b c
MsgBox nos mostrara el valor de la variable c el cual es igual a 3, esto por que a + b es igual a los valores "1" y "2".
Este ejemplo sirve para copiar el contenido de una planilla e insertarla en un segundo documento creado. Este ejemplo de Macro fue desarrollado por
Stephan Wunderlich. En esta macro se utilizan dos funciones principales la : dispatchURL que recibe como parmetros el nombre del documento y las celdas copiadas y adems la funcin principal CopySpreadsheet. Author: Stephan Wunderlich
Sub CopySpreadsheet firstDoc = ThisComponent REM En las siguientes 3 lneas le decimos a OpenOffice que seleccione REM en esta planilla todas las celdas cree una nueva hoja y las copie selectSheetByName(firstDoc, "Sheet2") dispatchURL(firstDoc,".uno:SelectAll") dispatchURL(firstDoc,".uno:Copy") secondDoc = StarDesktop.loadComponentFromUrl("private:factory/scalc","_blank",0,dimArray()) REM Luego de copiar las celdas las insertamos en la nuevo hoja
secondDoc.getSheets().insertNewByName("inserted",0) selectSheetByName(secondDoc, "inserted") dispatchURL(secondDoc,".uno:Paste") End Sub Sub selectSheetByName(document, sheetName) End Sub REM Al copiar y pegar las celdas creamos una funcin donde le pasamos como argumentos REM el documento y los parmetros que en este caso son las celdas copiadas y pegadas. Sub dispatchURL(document, aURL) Dim noProps() Dim URL As New com.sun.star.util.URL frame = document.getCurrentController().getFrame() URL.Complete = aURL transf = createUnoService("com.sun.star.util.URLTransformer") transf.parseStrict(URL) disp = frame.queryDispatch(URL, "", com.sun.star.frame.FrameSearchFlag.SELF _ OR com.sun.star.frame.FrameSearchFlag.CHILDREN) disp.dispatch(URL, noProps()) End Sub
Ejemplo 2: Configura una tabla para que tenga un ancho de columna optima
En el siguiente ejemplo debemos haber creado una tabla con algn contenido, ya sea texto o nmeros. La idea de la siguiente macro es seleccionar el contenido de la tabla y en base a l optimizar el ancho de la tabla, lea los comentarios para mayor detalle de lo que hace el cdigo fuente.
Sub SetTableOptimumWidth Dim oDispHelper REM Ayudante del Dispatch Dim oFrame REM Marco Actual de la Ventana . Dim oTable REM Primera tabla en el documento Dim oVCursor REM La vista del cursor Dim s$ oTable = ThisComponent.getTextTables().getByIndex(0) REM Seleccin de la tabla a optimizar ThisComponent.getCurrentController().select(oTable) oVCursor = ThisComponent.getCurrentController().getViewCursor() oVCursor.gotoEnd(True) oVCursor.gotoEnd(True) oFrame = ThisComponent.CurrentController.Frame oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper") REM Finalmente Aplicamos la optimizacin de la columna s$ = ".uno:SetOptimalColumnWidth" oDispHelper.executeDispatch(oFrame, s, "", 0, Array()) End SubSub SetTableOptimumWidth Dim oDispHelper REM Ayudante del Dispatch
Dim oFrame REM Marco Actual de la Ventana . Dim oTable REM Primera tabla en el documento Dim oVCursor REM La vista del cursor Dim s$ oTable = ThisComponent.getTextTables().getByIndex(0) REM Seleccin de la tabla a optimizar ThisComponent.getCurrentController().select(oTable) oVCursor = ThisComponent.getCurrentController().getViewCursor() oVCursor.gotoEnd(True) oVCursor.gotoEnd(True) oFrame = ThisComponent.CurrentController.Frame oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper") REM Finalmente Aplicamos la optimizacin de la columna s$ = ".uno:SetOptimalColumnWidth" oDispHelper.executeDispatch(oFrame, s, "", 0, Array()) End SubSub SetTableOptimumWidth Dim oDispHelper REM Ayudante del Dispatch Dim oFrame REM Marco Actual de la Ventana . Dim oTable REM Primera tabla en el documento Dim oVCursor REM La vista del cursor Dim s$ oTable = ThisComponent.getTextTables().getByIndex(0) REM Seleccin de la tabla a optimizar ThisComponent.getCurrentController().select(oTable) oVCursor = ThisComponent.getCurrentController().getViewCursor() oVCursor.gotoEnd(True) oVCursor.gotoEnd(True) oFrame = ThisComponent.CurrentController.Frame oDispHelper = createUnoService("com.sun.star.frame.DispatchHelper") REM Finalmente Aplicamos la optimizacin de la columna s$ = ".uno:SetOptimalColumnWidth" oDispHelper.executeDispatch(oFrame, s, "", 0, Array()) End Sub
Personal tools
Navigation
Main Page Recent changes Download OOo Documentation User Forum Extensions Templates Wiki Help
Go
Search
Toolbox
What links here Related changes Special pages Printable version Permanent link
This page was last modified on 9 August 2008, at 00:16. Content is available under OpenOffice.org Wiki:Copyrights. Privacy policy About Apache OpenOffice.org Wiki Disclaimers