You are on page 1of 5

Programacion en Macros

From Apache OpenOffice.org Wiki


< ES Jump to: navigation, search Esta pagina tiene por objeto el introducir a la persona interesada con el desarrollo de Macros, conceptos bsicos y se incluyen algunos ejemplos bsicos que le sern de gran ayuda para adentrarse en el desarrollo de Macros . Para probar las siguientes Macros vaya al men desplegable de OpenOffice.org > Herramientas > Macros > Organizar Macros.

El dialogo de organizacion de macros contiene diferentes areas de produccion de macros. Las macros se pueden observar en tres niveles:

Nivel de tu documento Tu perfil en el equipo A nivel sistema

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 *****

Sub Main msgBox "Hola Mundo" End Sub

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

a = 1 b = 2 c = a + b msgBox c End Sub

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".

Ejemplo 1: Copiar Todas las celdas y pegarlas en una hoja nueva

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

Retrieved from "http://wiki.services.openoffice.org/wiki/ES/Desarrollo/Macros" Categories: OOoES | Macros


Views

Page Discussion View source History

Personal tools

Log in / create account

Navigation

Main Page Recent changes Download OOo Documentation User Forum Extensions Templates Wiki Help

Create a book Search


Special:Search

Add wiki page Books 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

You might also like