You are on page 1of 25

Gua de primeros pasos

Captulo 13 Primeros pasos con Macros


Utilizar la grabadora de macros

Derechos de autor Este documento tiene derechos de autor 20112012 por sus colaboradores, tal como aparecen en la lista en la seccin titulada Colaboradores. Puede distribuirse o modificarse bajo los t rminos de la GNU General Public License, !ersin " o posterior, o la Creative Commons Attribution License, !ersin ".0 o posterior. #odas las marcas re$istradas %ue aparecen dentro de esta $ua pertenecen a sus due&os le$timos.

Colaboradores
'uan (. )an* 'or$e +. Gu*m,n )oriano

Comentarios y sugerencias
Por fa!or, dirija cual%uier clase de comentario o su$erencia acerca de este documento alocalizacion@oooes org

Agradecimientos
Este captulo est, basado en el captulo 1" de la Gua de comien*o de .pen.ffice.or$. /os colaboradores de este captulos son+ndre0 Piton1a2 'ean 3ollis 4eber 'uan (. )an*

Fecha de publicacin y versin del programa


5ersin en espa&ol publicada el 6 de ma1o de 2012. 7asada en la !ersin "." de /ibre.ffice

Nota para usuarios de Mac


+l$unas pulsaciones de teclado 1 opciones de men8 son diferentes en un 9ac de las usadas en 4indo0s 1 /inu:. /a si$uiente tabla muestra al$unas sustituciones comunes para las instrucciones dadas en este captulo. Para una lista detallada !ea la a1uda de la aplicacin. Windows/Linux
Herramientas Opciones opcin de men8 (lic con el botn derecho (trl <(ontrol= ?@ ?11

Equivalente en Mac
/ibre.ffice Preferencias (ontrol;clic z !Comando" )hift;z;?@ z;#

Efecto
+cceso a las opciones de confi$uracin +bre men8 conte:tual >tili*ado con otras teclas +bre el na!e$ador +bre la !entana de estilos 1 formato

La documentaci$n de Libre%&&ice est' disponible en es libreo&&ice org

Contenido
(erec)os de autor Nota para usuarios de Mac +u primera macro Crear una macro simple -.ecutar la macro 0er 1 editar la macro Los comentarios comienzan por 3-M (e&inir subrutinas con +U5 (e&inir variables usando (6M Poniendo toda la macro .unta Crear una macro Un e.emplo complicado -.ecutar la macro r'pidamente A veces la grabadora de macros &alla -l dispatc) &rame9or: C$mo usa la grabadora de macros el dispatc) &rame9or: %tras opciones %rganizaci$n de macros ;($nde se almacenan las macros< 6mportar macros (escargar macros para importar C$mo e.ecutar una macro 5arra de )erramientas -lemento de men> Ata.os de teclado -vento -?tensiones -scribir macros sin la grabadora -ncontrar m's in&ormaci$n Material incluido 3ecursos online Material impreso 1 e5oo:s * * , , / 2 4 4 4 7 7 8 1* 1* 1* 1* 13 13 12 12 17 17 *= *= *= *1 ** *3 *3 *, *, *,

Primeros pasos con macros

Su primera macro
>na macro1 es una secuencia de comandos o pulsaciones de tecla, $uardados para un uso posterior. >n ejemplo de macro simple es a%uella %ue AescribeB su direccin. El len$uaje de macros de /ibre.ffice es mu1 fle:ible, permitiendo la automati*acin tanto de tareas simples como de tareas complejas. /as macros son especialmente 8tiles para repetir la misma tarea una 1 otra !e*. /as macros de /ibre.ffice se escriben normalmente en un len$uaje llamado )tar7asic, o abre!iando 7asic. +un%ue puede aprender 7asic 1 escribir macros, la cur!a de aprendi*aje para crear macros desde cero es mu1 empinada. El m todo usual de aprendi*aje para un principiante es usar la $rabadora de macros incluida, la cual $raba sus pulsaciones 1 las $uarda para un uso posterior. /a ma1ora de las tareas en /ibre.ffice se lle!an a cabo Aen!iando comandosB los cuales son interceptados 1 usados. /a $rabadora de macros trabaja $rabando los comandos %ue se en!an <!ea AEl dispatch frame0or2B en la p,$ina 12=

Crear una macro simple


Cma$nese introduciendo repetidamente una informacin simple. +un%ue puede almacenar la informacin en el portapapeles, si utili*a el portapapeles para al$o m,s, el contenido cambia. +lmacenar el contenido como una macro es una solucin simple. <En al$unos casos, inclu1endo el ejemplo usado a%u, es mejor solucin utili*ar +uto#e:to=. 1= >tilice Herramientas Macros Grabar macro para empe*ar a $rabar una macro. )e muestra una pe%ue&a !entana para %ue sepa %ue /ibre.ffice est, $rabando. 2= Escriba la informacin deseada o realice una serie adecuada de operaciones. En este caso 1o he escrito mi nombre, Andre9 Piton1a: "= 3a$a clic en el botn Finali ar grabacin para terminar la $rabacin, $uardar la macro 1 mostrar el di,lo$o 9acros 7asic de /ibre.ffice <!ea ?i$ura 1=. D= +se$8rese de abrir el contenedor de bibliotecas llamado Mis macros. 7us%ue la biblioteca llamada +tandard en 9is macros. #en$a cuidado, cada contenedor de bibliotecas tiene una biblioteca llamada )tandard. )eleccione la biblioteca )tandard 1 ha$a clic en Nuevo mdulo para crear un mdulo nue!o para contener a la macro.

1 9acro es una apcope de macroinstruccin, por eso se usa en femenino , Primeros pasos con macros

Contenedores de bibliotecas

Macros

Bibliotecas Mdulos

@igura 1A (ialogo de organizaci$n de macros @= El nombre por defecto del nue!o mdulo es 9odule1E elija un nombre m,s adecuado. +un%ue a8n no es mu1 descripti!o, 1o he usado Grabado. Escriba un nombre descripti!o 1 pulse Aceptar para crear el mdulo. )e muestra el di,lo$o 9acros 7asic de /ibre.ffice de nue!o mostrando el mdulo nue!o.

@igura *A (ar al m$dulo un nombre descriptivo F= Gesalte el mdulo reci n creado. En la es%uina superior i*%uierda escriba el nombre de la macro, como AEscribir9iHombreB 1 ha$a clic en Guardar para $uardar la macro. )i ha se$uido todos los pasos, la biblioteca )tandard ahora contendr, un mdulo llamado Grabado %ue contiene la macro Escribir9iHombre, como se muestra en la ?i$ura ". (uando /ibre.ffice crea un mdulo nue!o, crea autom,ticamente la macro llamada 9ain, como puede !er en la ?i$ura ".

!"ecutar la macro
)eleccione Herramientas Macros !"ecutar macro para abrir el di,lo$o )elector de macro <!er ?i$ura "=. )elecciona la macro reci n creada 1 ha$a clic en !"ecutar.

+u primera macro

@igura 3A +eleccione su macro 1 )aga clic en -.ecutar 3a1 otros m todos de ejecutar una macro. Por ejemplo, use Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el or$ani*ador de macros, el cual tiene tambi n un botn !"ecutar. El autor, ,!ido escritor de macros, prefiere el or$ani*ador de macros por%ue el di,lo$o $eneralmente se abre m,s r,pido, aun%ue la seleccin de la macro puede ser li$eramente m,s lenta.

&er y editar la macro


Puede !er 1 editar la macro %ue acaba de crear. >tilice Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o 9acros de /ibre.ffice <!ea ?i$ura "=. )eleccione la nue!a macro 1 ha$a clic en !ditar Listado 1A Macro generada B-scribirMiNombreC

REM ***** Sub Main End Sub

BASIC

*****

sub EscribirMiNombre rem ------------------------------------------------------------rem define variables dim document as object dim dispatcher as object rem ------------------------------------------------------------rem et access to the document document ! "hisComponent#CurrentController#$rame dispatcher ! create%noService&'com#sun#star#frame#(ispatch)elper'* rem ------------------------------------------------------------dim ar s+&,* as ne- com#sun#star#beans#.ropert/0alue
2 Primeros pasos con macros

ar s+&,*#Name ! '"e1t' ar s+&,*#0alue ! 'Andre- .iton/a2' dispatcher#e1ecute(ispatch&document3 '#uno4Insert"e1t'3 ''3 ,3 ar s+&** end sub
/a macro del /istado 1 no es tan complicada como parece al principio. +prender unas pocas cosas a1uda si$nificati!amente a entender las macros $eneradas. /a discusin comien*a con caractersticas en la parte superior del listado 1 su descripcin. )i %uiere e!itar detalles, entonces simplemente cambie el te:to A+ndre0 Piton1a2B por el %ue desee insertar en la posicin actual del cursor.

Los comentarios comienzan por REM


/a palabra cla!e GE9, abre!iatura de remar:, comien*a un comentario de macro. #odo el te:to despu s de GE9 <en la misma lnea= se i$nora. )e puede usar tambi n una comilla simple para comen*ar un comentario.
)tar7asic no es sensible a las ma18sculas, por lo %ue tanto GE9 como Gem o rem sir!en para comen*ar un comentario. )i usa constantes simblicas definidas por la +PC, es m,s se$uro asumir %ue los nombres son sensibles a las ma18sculas Ilas constantes simblicas son un tema a!an*ados 1 $eneralmente no son necesarias para la $ente %ue usa la grabadora de macros.

Sugerencia

Definir subrutinas con SU


/as macros indi!iduales se almacenan en subrutinas definidas con la palabra cla!e )>7. El final de una subrutinas se indica por las palabras EHD )>7. El cdi$o comien*a definiendo la subrutina llamada 9ain, %ue est, !aca 1 no hace nada. /a si$uiente subrutina Escribir9iHombre contiene el cdi$o $enerado.

Sugerencia

/ibre.ffice crea una subrutina !aca llamada 9ain cuando crea un mdulo.

3a1 temas a!an*ados %ue !an m,s all, del alcance de este documento, pero conocerlos podra ser interesante-

)e puede escribir una macro de modo %ue se puedan pasar !alores a la subrutina. /os
!alores se llaman ar$umentos. /as macros $rabadas no aceptan ar$umentos. .tra clase de subrutina se llama funcin. >na funcin es una subrutina %ue de!uel!e un !alor. Para definir una funcin se utili*a la palabra cla!e ?>H(#C.H en lu$ar de )>7. /as macros $eneradas son siempre del tipo )>7.

Definir variables usando D!M


)e puede escribir informacin en un tro*o de papel de modo %ue se pueda leer despu s. >na !ariable, como un tro*o de papel, contiene informacin %ue se puede leer 1 cambiar. /a declaracin DC9 es similar a reser!ar un tro*o de papel para almacenar un mensaje o nota. /a macro Escribir9iHombre define las !ariables document 1 dispatc)er del tipo ob.ect. .tros tipos comunes de !ariables son stringD integer 1 date. >na tercera !ariable llamada args1, es una matri* <arra1= de !alores de propiedades. >na !ariable de tipo arra1 permite a una 8nica !ariable contener m8ltiples !alores, similar a almacenar m8ltiples p,$ina en un slo libro. /os !alores en
+u primera macro 4

una matri* se numeran $eneralmente empe*ando por cero. El n8mero entre par ntesis indica la posicin m,s alta utili*able para almacenamiento. En este ejemplo solamente ha1 un !alor 1 se numera cero.

"oniendo toda la macro #unta


/os si$uiente detalles son mu1 completosE no es importante entender todos los detalles en este momento. /a primera lnea define el principio de la macro.

sub EscribirMiNombre
Declara dos !ariables-

dim document as object dim dispatcher as object


#)isComponent se refiere al documento actual. /a propiedad CurrentControler de un documento se refiere a un ser!icio %ue AcontrolaB el documento. Por ejemplo cuando usted escribe es el (urrent(ontroler %uien lo nota. Entonces es el (urrent(ontroler %uien muestra los cambios en la estructura del documento. /a propiedad @rame de un controlador de!uel!e la estructura principal de un documento. Por lo tanto, la !ariable llamada document se refiere a la estructura del documento, la cual recibe los comandos en!iados.

document ! "hisComponent#CurrentController#$rame
/a ma1ora de las tareas en /ibre.ffice se lle!an a cabo en!iando <dispatchin$= un comando. /ibre.ffice !ersin 2.0 introduce el ser!icio dispatch helper el cual hace la ma1ora del trabajo para usar dispatches en macros. El m todo CreateUno+ervice acepta el nombre de un ser!icio e intenta crear una instancia de ese ser!icio. +l completarlo, la !ariable dispatcher contiene una referencia a un Dispatch3elper.

dispatcher ! create%noService&'com#sun#star#frame#(ispatch)elper'*
Declara una matri* de propiedades. (ada propiedad tiene un nombre 1 un !alor. En otras palabras, es un par nombreJ!alor. /a matri* creada tiene una propiedad de ndice cero.

dim ar s+&,* as ne- com#sun#star#beans#.ropert/0alue


Da a la propiedad el nombre A#e:tB 1 el !alor A +ndre0 Piton1a2B, %ue es el te:to %ue se inserta cuando se ejecuta la macro.

ar s+&,*#Name ! '"e1t' ar s+&,*#0alue ! 'Andre- .iton/a2'


+%u es donde ocurre la ma$ia. El dispatch helper en!a un mensaje <dispatch= a la estructura del documento <almacenada en la !ariable llamada document= con el comando .uno-Cnsert#e:t. /os si$uientes dos ar$umentos, &rame name 1 searc) &lags !an m,s all, del alcance de este documento. El 8ltimo ar$umento es la matri* de !alores de propiedades %ue sera usado cuando se ejecute el comando Cnsert#e:t.

dispatcher#e1ecute(ispatch&document3 '#uno4Insert"e1t'3 ''3 ,3 ar s+&**


?inalmente, el final de la subrutina.

end sub

Primeros pasos con macros

Crear una macro


Ko $eneralmente ha$o dos pre$untas antes de $rabar una macro1= L)e puede escribir la tarea como un conjunto simple de comandosM 2= L)e pueden ordenar los pasos de modo %ue el 8ltimo comando deje el cursor preparado para el si$uiente comandoM

'n e"emplo complicado


Ko copio frecuentemente filas 1 columnas de datos desde un sitio 0eb 1 los formateo como tabla en un documento de te:to. Primero copio la tabla desde el sitio 0eb al portapapeles. Para e!itar formatos e:tra&os 1 fuentes pe$o el te:to en un documento de 4riter como te:to sin formato. Geformateo el te:to con tabuladores entre las columnas de modo %ue puedo usar (abla Convertir (e)to en tabla para con!ertirlo en tabla. Cnspecciono el te:to para !er si puedo $rabar una macro para formatear el te:to <recuerde las dos pre$untas %ue ha$o=. (omo ejemplo copi el $rupo de constantes ?ont4ei$ht desde el sitio 0eb de /ibre.ffice. /a primera columna indica el nombre de la constante. (ada nombre !a se$uido de un espacio 1 un tabulador. D.H#NH.4 #3CH >/#G+/CG3# /CG3# )E9C/CG3# H.G9+/ )E9C7./D 7./D >/#G+7./D 7/+(N #he font 0ei$ht is not specifiedJ2no0n. specifies a @0O font 0ei$ht. specifies a F0O font 0ei$ht. specifies a 6@O font 0ei$ht. specifies a P0O font 0ei$ht. specifies a normal font 0ei$ht. specifies a 110O font 0ei$ht. specifies a 1@0O font 0ei$ht. specifies a 16@O font 0ei$ht. specifies a 200O font 0ei$ht.

Quiero %ue la primera columna conten$a el !alor num rico, la se$unda columna el nombre 1 la tercera la descripcin. /o %ue se desea es f,cil lle!arlo a cabo en todas las columnas e:cepto en D.H#NH.4 1 H.G9+/, las cuales no contienen un !alor num rico Ipero 1o se %ue los !alores son 0 1 100, por lo %ue los introducir manualmente. /os datos se pueden limpiar de m8ltiples manerasItodas ellas f,ciles. El primer ejemplo utili*a escritura de teclado %ue asume %ue el cursor est, al principio de la lnea con el te:to #3CH . 1= 2= "= D= >tilice Herramientas Macros Grabar macro para empe*ar a $rabar. Presione CtrlE@lec)a derec)a para mo!er el cursor al comien*o de AspecifiesB. Presione 3etroceso dos !eces para eliminar el tabulador 1 el espacio. Presione #abulador para a&adir el tabulador sin el espacio detr,s del nombre de la constante @= Presione +uprimir para eliminar la s min8scula 1 presione ) para a&adir una ) ma18scula.
Crear una macro 8

F= Presione CtrlE@lec)a derec)a dos !eces para mo!er el cursor al inicio del n8mero. 6= Presione CtrlEMa1>sculasE@lec)a derec)a para seleccionar el n8mero 1 mo!er el cursor delante del si$no O. R= Presione CtrlEC para copiar la seleccin en el portapapeles. P= Presione @in para mo!er el cursor al final de la lnea. 10= Presionar 3etroceso dos !eces para eliminar los dos espacios del final. 11= Presione 6nicio para mo!er el cursor al principio de la lnea. 12= Presione CtrlE0 para pe$ar el n8mero seleccionado al principio de la lnea. 1"= Pe$ar el !alor tambi n pe$a un espacio e:tra, por eso presione 3etroceso para remo!er el espacio e:tra. 1D= Presione #abulador para insertar un tabulador entre el n8mero 1 el nombre. 1@= Presione 6nicio para mo!erse al principio de la lnea. 1F= Presione @lec)a aba.o para mo!erse a la si$uiente lnea. 16= ?inalice la $rabacin 1 $uarde la macro. (uesta mucho m,s tiempo leer 1 escribir los pasos %ue $rabar la macro. #rabaje lentamente 1 piense en los pasos mientras los hace. (on pr,ctica lo har, instinti!amente. /a macro $enerada se ha modificado para contener el n8mero de paso en los comentarios para enla*ar el cdi$o con los pasos de arriba. Listado *A Copiar los valores numFricos al principio de la columna
sub Cop/Num"oCol+ rem ------------------------------------------------------------rem define las variables dim document as object dim dispatcher as object rem ------------------------------------------------------------rem obtiene acceso al documento document ! "hisComponent#CurrentController#$rame dispatcher ! create%noService&'com#sun#star#frame#(ispatch)elper'* rem &5* .resionar Ctrl+Flecha derecha para mover el cursor al comien6o de rem 7specifies8# dispatcher#e1ecute(ispatch&document3 '#uno49o"oNe1t:ord'3 ''3 ,3 Arra/&** rem &;* .resionar Retroceso dos veces para eliminar el tabulador / el espacio# dispatcher#e1ecute(ispatch&document3 '#uno4S-Bac2space'3 ''3 ,3 Arra/&** rem ------------------------------------------------------------dispatcher#e1ecute(ispatch&document3 '#uno4S-Bac2space'3 ''3 ,3 Arra/&** rem &<* .resionar Tabulador para a=adir el tabulador sin el espacio detr>s del rem nombre de la constante dim ar s<&,* as ne- com#sun#star#beans#.ropert/0alue ar s<&,*#Name ! '"e1t' ar s<&,*#0alue ! C)R?&@* dispatcher#e1ecute(ispatch&document3 '#uno4Insert"e1t'3 ''3 ,3 ar s<&** rem &A* .resionar Suprimir para eliminar la s minBscula###

1=

Primeros pasos con macros

dispatcher#e1ecute(ispatch&document3 '#uno4(elete'3 ''3 ,3 Arra/&** rem &A* ### / .resionar S para a=adir una S ma/Bscula# dim ar sC&,* as ne- com#sun#star#beans#.ropert/0alue ar sC&,*#Name ! '"e1t' ar sC&,*#0alue ! 'S' dispatcher#e1ecute(ispatch&document3 '#uno4Insert"e1t'3 ''3 ,3 ar sC&** rem &C* .resionar Ctrl+Flecha derecha dos veces para mover el cursor al inicio rem del nBmero# dispatcher#e1ecute(ispatch&document3 '#uno49o"oNe1t:ord'3 ''3 ,3 Arra/&** rem ------------------------------------------------------------dispatcher#e1ecute(ispatch&document3 '#uno49o"oNe1t:ord'3 ''3 ,3 Arra/&** rem &D* .resionar Ctrl+Maysculas+Flecha derecha para seleccionar el nBmero# dispatcher#e1ecute(ispatch&document3 '#uno4:ordRi htSel'3 ''3 ,3 Arra/&** rem &E* .resionar Ctrl+C para copiar la selecciFn en el portapapeles# dispatcher#e1ecute(ispatch&document3 '#uno4Cop/'3 ''3 ,3 Arra/&** rem &@* .resionar Fin para mover el cursor al final de la lGnea# dispatcher#e1ecute(ispatch&document3 '#uno49o"oEndHfIine'3 ''3 ,3 Arra/&** rem &+,* .resionar Retroceso para eliminar los dos espacios del final# dispatcher#e1ecute(ispatch&document3 '#uno4S-Bac2space'3 ''3 ,3 Arra/&** rem ------------------------------------------------------------dispatcher#e1ecute(ispatch&document3 '#uno4S-Bac2space'3 ''3 ,3 Arra/&** rem &++* .resionar Inicio para mover el cursor al principio de la lGnea# dispatcher#e1ecute(ispatch&document3 '#uno49o"oStartHfIine'3 ''3 ,3 Arra/&** rem &+5* .resionar Ctrl+V para pe ar el nBmero seleccionado al principio de la lGnea# dispatcher#e1ecute(ispatch&document3 '#uno4.aste'3 ''3 ,3 Arra/&** rem &+;* .resionar Retroceso para remover el espacio e1tra# dispatcher#e1ecute(ispatch&document3 '#uno4S-Bac2space'3 ''3 ,3 Arra/&** rem &+<* .resionar Tabulador para insertar un tabulador entre nBmero / nombre# dim ar s+D&,* as ne- com#sun#star#beans#.ropert/0alue ar s+D&,*#Name ! '"e1t' ar s+D&,*#0alue ! C)R?&@* dispatcher#e1ecute(ispatch&document3 '#uno4Insert"e1t'3 ''3 ,3 ar s+D&** rem &+A* .resionar Inicio para moverse al principio de la lGnea# dispatcher#e1ecute(ispatch&document3 '#uno49o"oStartHfIine'3 ''3 ,3 Arra/&** rem &+C* .resionar Flecha abajo para moverse a la si uiente lGnea# dim ar s+@&+* as ne- com#sun#star#beans#.ropert/0alue ar s+@&,*#Name ! 'Count' ar s+@&,*#0alue ! +
Crear una macro 11

ar s+@&+*#Name ! 'Select' ar s+@&+*#0alue ! false dispatcher#e1ecute(ispatch&document3 '#uno49o(o-n'3 ''3 ,3 ar s+@&** end sub

)e usan mo!imientos del cursor para todas las operaciones <en oposicin a la b8s%ueda=. )i la ejecutamos en la lnea D.H#NH.4 se mue!e la palabra 9eig)t al principio de la lnea 1 el primer A#heB se cambia a A)heB. Esto no es perfecto, pero no debera haber ejecutado la macro en las lneas %ue no tienen el formato adecuadoE necesitara hacerlo manualmente.

!"ecutar la macro r*pidamente


Es tedioso ejecutar la macro repetidamente utili*ando Herramientas Macros !"ecutar macro <!er ?i$ura "=. /a macro puede ser ejecutada desde el CDE. >se Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o 9acros 7asic. )eleccione su macro 1 ha$a clic en !ditar para abrir la macro en el CDE. El CDE tiene un icono !"ecutar programa %AS+C %ue ejecuta la primera macro en el CDE. + menos %ue lo cambie la primera macro es la macro !aca llamada 9ain. 9odifi%ue 9ain para %ue sea como se muestra en /istado ". Listado 3A Modi&iGue Main para llamar a Cop1Num#oCol1

Sub Main Cop/Num"oCol+ End Sub


+hora puede ejecutar (op1Hum#o(ol1 repetidamente haciendo clic en el icono Ejecutar pro$rama 7+)C( en la barra de herramientas del CDE. Esto es mu1 r,pido 1 f,cil, especialmente para macros temporales %ue se !an a usar unas pocas !eces 1 despu s se !an a descartar.

A veces la grabadora de macros $alla


Entender los interiores de /ibre.ffice a1uda a entender cmo 1 por %u la $rabadora de macros falla frecuentemente. El principal culpable est, relacionado con el dispatch frame0or2 <marco de en!o= 1 su relacin con la $rabadora de macros.

!l dispatch $rame,orEl propsito del dispatch frame0or2 es pro!eer acceso uniforme a los componentes <documentos= para los comandos %ue normalmente corresponden a elementos de men8. Puedo usar Archivo Guardar en el men8, el atajo de teclado CtrlEG o hacer clic en el icono Guardar de la barra de herramientas. #odos estos comandos son traducidos en el mismo Adispatch commandB %ue se en!a al documento actual. El dispatch frame0or2 se puede usar tambi n para en!iar AcomandosB de retorno a la C> <interfa* de usuario=. Por ejemplo, despu s de $uardar el documento el comando Guardar arc)ivo se deshabilita. #an pronto como se modifi%ue el documento el comando Guardar arc)ivo se habilita. )i !emos un comando dispatch, es un te:to como .uno-Cnsert.bject o .uno-Go#o)tart.f/ine. El comando se en!a a la macro del documento 1 el macro pasa el comando hasta %ue encuentra un objeto %ue puede manejar el comando.

1*

Primeros pasos con macros

Cmo usa la grabadora de macros el dispatch $rame,or/a $rabadora de macros $raba los dispatches $enerados. /a $rabadora es relati!amente sencilla de implementar 1 el mismo comando %ue se en!a se $raba para uso posterior. El problema es %ue no todos los comandos en!iados est,n completos. Por ejemplo, insertar un objeto $enera el si$uiente cdi$odispatcher#e1ecute(ispatch&document3 '#uno4InsertHbject'3 ''3 ,3 Arra/&** Ho es posible especificar %ue clase de objeto !a a crear o insertar. )i un objeto se inserta desde un archi!o, usted no puede especificar %u archi!o insertar. Ko $rab una macro 1 us Herramientas Opciones para abrir 1 modificar elementos de confi$uracin. /a macro $enerada no $rab nin$8n cambio, de hecho, el cdi$o $enerado est, comentado por lo %ue ni si%uiera se ejecuta.

rem dispatcher#e1ecute(ispatch&document3 '#uno4Hptions"ree(ialo '3 ''3 ,3 Arra/&**


)i se abre un di,lo$o, el comando para abrir el di,lo$o probablemente sea $enerado. (ual%uier trabajo hecho dentro del di,lo$o $eneralmente no se $raba. +l$unos ejemplos inclu1en los di,lo$os de or$ani*acin de macros, insertar caracteres especiales 1 di,lo$os similares. .tros problemas posibles usando la $rabadora de macros inclu1en cosas como insertar una frmula, establecer ,rea de usuario, establecer filtros en (alc, acciones en formularios de bases de datos 1 e:portar un documento a un archi!o PD? encriptado. )in embar$o nunca sabr, con certe*a cu,l funcionar, a menos %ue lo intente. Por ejemplo, las acciones del di,lo$o buscar se capturan correctamente.

Otras opciones
(uando la $rabadora de macros no es capa* de resol!er un problema especfico, la solucin normal es escribir cdi$o utili*ando los objetos de /ibre.ffice. Desafortunadamente la cur!a de aprendi*aje de los objetos de /ibre.ffice es mu1 empinada. Generalmente es mejor empe*ar con ejemplos simples e ir di!ersificando lentamente a medida %ue !a1a aprendiendo. )i $raba macros de (alc 1 la $rabadora puede $enerar correctamente una macro, ha1 un complemento creado por Paolo 9anto!ani, el cual con!ierte las macros de (alc cuando se $raban. El cdi$o final manipula los objetos de /ibre.ffice en !e* de $enerar dispatches. Esto puede ser mu1 8til para aprender el modelo de objetos. Puede descar$ar la $rabadora de macros del sitio 0eb de Paolo directamente o del sitio 0eb de macros de /ibre.ffice. Debera comprobar ambos sitios para !er cual tiene la 8ltima !ersin. )ttpAHH999 paoloImantovani orgHdo9nloadsH(ispatc)#oApi3ecorderH )ttpAHH999 libreo&&icemacros orgHuser p)p

Organi acin de macros


En /ibre.ffice las macros se a$rupan en mdulos, los mdulos se a$rupan en bibliotecas 1 las bibliotecas se a$rupan en contenedores de bibliotecas. >na biblioteca se usa $eneralmente como $rupo principal para una cate$ora completa de macros o una aplicacin completa. /os mdulos $eneralmente di!iden la funcionalidad, tales como interaccin con el usuario 1 c,lculos. /as macros indi!iduales son subrutinas 1 funciones.

%rganizaci$n de macros

13

Contenedor de bibliotecas Biblioteca 1 Biblioteca 2 Biblioteca 3 Mdulo 1 Mdulo 2 Macro 1 Macro 2

@igura ,A JerarGua de bibliotecas de macros >n inform,tico usara la ?i$ura @ para describir precisamente la situacin. El te:to A1..SB si$nifica uno o m,s 1 A0..SB si$nifica cero o m,s. El rombo ne$ro si$nifica est, compuesto o contiene.

>n contenedor de bibliotecas contiene una o m,s bibliotecas 1 cada biblioteca est,
contenida en un contenedor. >na biblioteca contiene cero o m,s mdulos 1 cada mdulo est, contenido en una biblioteca. >n mdulo contiene cero o m,s macros 1 cada macro est, contenida en un mdulo.
Biblioteca
1 1..* 1 0..*

Contenedor de bibliotecas

Mdulo
1 0..*

Macro

@igura /A JerarGua de bibliotecas de macros >tilice Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o 9acros 7asic de /ibre.ffice <!er ?i$ura F=. #odas los contenedores de bibliotecas disponibles se muestran en la lista (esde la macro. (ada documento es un contenedor de bibliotecas, capa* de contener m8ltiples bibliotecas. /a aplicacin en s misma act8a como dos contenedores de bibliotecas, un contenedor para macros distribuidas con /ibre.ffice llamado 9acros de /ibre.ffice 1 un contenedor para macros personales llamado 9is macros. (omo se puede !er en la ?i$ura F, solamente ha1 abiertos dos documentos en este momento.

1,

Primeros pasos con macros

@igura 2A Los contenedores de bibliotecas se muestran a la izGuierda /as macros de /ibre.ffice se almacenan con el cdi$o de tiempo de ejecucin de la aplicacin, el cu,l no se puede editar a menos %ue sea administrador. Esto es as por%ue estas macros no deberan modificarse 1 usted no debera almacenar sus propias macros en el contenedor de /ibre.ffice. + menos %ue sus macros se apli%uen a un 8nico documento 1 solo a ese documento, sus macros deberan se$uramente almacenarse en el contenedor 9is macros. El contenedor mis macros se almacena en su ,rea de usuario o directorio personal. )i una macro est, contenida en un documento, la macro $rabada intentar, ejecutarse en ese documento, principalmente por%ue la macro usa A#his(omponentB para sus acciones. (ada contenedor de bibliotecas contiene una biblioteca llamada +tandard. Es mejor %ue cree sus propias bibliotecas con nombres si$nificati!os %ue usar la biblioteca )tandard. Ho solamente los nombres si$nificati!os son m,s f,ciles de manejar, sino %ue se pueden importar en otros contenedores de bibliotecas mientras %ue en la biblioteca )tandard no se puede.

.recaucin

/ibre.ffice le permite importar bibliotecas en un contenedor de bibliotecas, pero no le permite sobrescribir la biblioteca llamada )tandard. Por lo tanto, si almacena sus macros en la biblioteca )tandard no la podr, importar desde otro contenedor de bibliotecas.

Del mismo modo %ue es sensato dar nombres si$nificati!os a sus bibliotecas, es prudente utili*ar nombres si$nificati!os para los mdulos. Por defecto /ibre.ffice usa nombres como 9odule1. )i ntase libre de utili*ar sus propios nombres si$nificati!os. (uando crea sus macros debe decidir dnde almacenarlas. +lmacenar una macro en un documento es 8til si el documento !a a ser compartido 1 %uiere %ue la macro sea incluida con el documento. /as macros almacenadas se encuentran en el contenedor de bibliotecas llamado 9is macros, sin embar$o, est,n disponibles $lobalmente para todos los documentos. /as macros no est,n disponibles hasta %ue se car$a la biblioteca %ue las contiene. /a biblioteca )tandard 1 la biblioteca de plantilla, sin embar$o, se car$an autom,ticamente. >na biblioteca car$ada se muestra de modo diferente a como la hace una %ue no est, car$ada. Para car$ar una biblioteca 1 los mdulos %ue contiene ha$a doble clic en la biblioteca.

%rganizaci$n de macros

1/

/0nde se almacenan las macros1


/ibre.ffice almacena los datos especficos del usuario en un directorio bajo el directorio particular del usuario. Por ejemplo, en 4indo0s es C:\Documents and Settings\<nombre>\Application Data. /as macros de usuario se almacenan en /ibre.ffice\3\user\basic. (ada biblioteca se almacena en su propio directorio del directorio basic. Ho es importante aprender donde se almacenan las macros para un uso ocasional. )in embar$o si sabe donde se almacenan puede crear una copia de se$uridad, compartir sus macros o inspeccionarlas si ha1 al$8n error. Por ejemplo en al$unas de mis actuali*aciones de /ibre.ffice, todas mis macros desaparecieron. +un%ue las macros estaban a8n en el disco no se copiaron a los nue!os directorios. /a solucin fue importar las macros en la nue!a instalacin. >tilice Herramientas Macros Organi ar di*logos para abrir el di,lo$o .r$ani*ador de macros. .tro m todo corriente de abrir este di,lo$o es usando Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o 9acros 7asic de /ibre.ffice 1 hacer clic sobre el botn Organi ador <!er ?i$ura 6=

@igura 4A -l di'logo organizador de macros

+mportar macros
El di,lo$o .r$ani*ador de macros de /ibre.ffice proporciona funcionalidad para crear, eliminar 1 renombrar bibliotecas, mdulos 1 di,lo$os. )eleccione el contenedor de bibliotecas %ue !a a usar 1 ha$a clic en el botn +mportar para importar bibliotecas de macros <!ea ?i$ura R=

Sugerencia

Ho puede importar la biblioteca llamada )tandard. En /inu:, los archi!os especficos de /ibre.ffice se almacenan en un directorio cu1o nombre comien*a por punto. Directorios 1 archi!os cu1o nombre comien*a por punto no se muestran en un di,lo$o normal de seleccin. Para abrir el directorio 1o na!e$o hasta el directorio padre, escribo el nombre .libreoffice 1 ha$o clic en Abrir. Esto abre el directorio %ue inicialmente no se mostraba.

Sugerencia

12

Primeros pasos con macros

@igura 7A +eleccionar una biblioteca de macros para importar Ha!e$ar hasta el directorio %ue contiene la biblioteca a importar. Generalmente ha1 dos archi!os para esco$er, dialo$.:lb 1 script.:lb. Ho importa cual de estos archi!os seleccione, se importar,n los dos. )eleccione un archi!o 1 pulse Abrir para continuar <!ea ?i$ura P=

@igura 8A +eleccione las opciones de importar )i la biblioteca 1a e:iste, no se reempla*ar, a menos %ue est marcado 2eempla ar bibliotecas e)istentes. )i est, marcado +nsertar como re$erencia la biblioteca se referencia en su locali*acin actual pero no puede modificarla. En cambio, si +nsertar como re$erencia no est, marcado la biblioteca se copia al directorio de macros del usuario. /as macros se pueden almacenar en bibliotecas dentro de documentos de /ibre.ffice. )eleccione un documento en lu$ar de un directorio del disco <como se muestra en la ?i$ura R= para importar bibliotecas contenidas en un documento.

%rganizaci$n de macros

14

0escargar macros para importar


3a1 macros disponibles para descar$ar. +l$unas macros est,n contenidas en documentos, otras son archi!os normales %ue debe seleccionar e importar 1 otras son te:to de macros para copiar 1 pe$ar en el CDE de 7asicE utilice Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o 9acros 7asic de /ibre.ffice, elija la macro a editar 1 ha$a clic en !ditar para abrir el CDE de 7asic. +l$unas macros est,n disponibles como descar$a $ratuita en Cnternet #abla 1 +itios donde encontrar e.emplos de macros Localizaci$n
)ttpAHH999 ooomacros orgH )ttpAHH999 piton1a: orgHoo p)p )ttpAHH999 piton1a: orgHdatabaseH )ttpAHHdevelopment openo&&ice orgH )ttpAHH999 ooo&orum orgH )ttpAHHuser services openo&&ice orgH

Descripci$n
E:celente coleccin de pa%uetes de macros. 9aterial de referencia relacionado con macros. 9aterial de referencia relacionado con macros de bases de datos. 9ontones de enlaces a todo. 9uchos ejemplos 1 a1uda. .tro foro con muchos ejemplos 1 a1uda.

Cmo e"ecutar una macro


>n m todo com8n de ejecutar una macro es el si$uiente1= >tilice Herramientas Macros !"ecutar macro para abrir el di,lo$o )elector de macro <!ea ?i$ura 10= 2= )eleccione la biblioteca 1 el mdulo en la lista 7iblioteca <lado i*%uierdo=. "= )eleccione la macro en la lista Hombre de macro <lado derecho=. D= 3a$a clic en !"ecutar para ejecutar la macro.

17

Primeros pasos con macros

@igura 1=A Utilice el di'logo +elector de macros para e.ecutar las macros +un%ue puede utili*ar Herramientas Macros !"ecutar macros para ejecutar una macro, esto no es eficiente para ejecutar macros frecuentemente. >na t cnica m,s com8n es asi$nar una macro a un botn de una barra de herramientas, a un elemento de men8, a un atajo de teclado o a un botn insertado en un documento. 9ientras selecciona un m todo es bueno pre$untarse cuestiones como-

LDebe estar la macro disponible para un solo documento o $lobalmente para todos los
documentosM LEst, la macro relacionada con un un tipo especfico de documento, como un documento de (alcM L(on %u frecuencia se usar, la macroM

/as respuestas determinaran dnde almacenar la macro 1 cmo estar, disponible. Por ejemplo, se$uramente no a&adir, una macro raramente usada a una barra de herramientas. Para a1udarle a determinar sus elecciones !ea la #abla 2 #abla * MFtodos para iniciar una macro %ipo
7arra de herramientas 9en8 +tajo de teclado E!ento

Libre&ffice
Ho Ho ) )

%ipo de documento
) ) ) Ho

Documento
) ) Ho )

Para a&adir un elemento de men8, atajo de teclado o icono de una barra de herramientas %ue llame a una macro utilice el di,lo$o Personali*ar <!ea ?i$ura 12=. +bra este di,lo$o de cual%uiera de estas formas-

Elija Herramientas .ersonali ar en la barra de men8s.

C$mo e.ecutar una macro

18

(ada barra de herramientas tiene un icono


.ersonali ar barra de herramientas.

%ue abre un men8E elija la opcin

Sugerencia

>na cobertura completa del di,lo$o Personali*ar !a m,s all, del alcance de este documento. 3a$a clic en el botn Ayuda para acceder a las p,$inas de a1uda incluidas en /ibre.ffice.

El men8 personali*ar contiene pesta&as para confi$urar men8s, atajos de teclado, barras de herramientas 1 e!entos.

@igura 11A (i'logo Personalizar de Libre%&&ice

%arra de herramientas
)e pueden a&adir macros a las barras de herramientas. Para m,s informacin de cmo modificar barras de herramientas !ea el captulo 1D <Personali*ar /ibre.ffice=.

*=

Primeros pasos con macros

!lemento de men3
>tilice Herramientas .ersonali ar para abrir el di,lo$o Personali*ar 1 seleccione la pesta&a 9en8s. Puede modificar un men8 e:istente o crear nue!os men8s %ue llamen a macros. Para saber m,s acerca de modificar men8s !ea el captulo 1D.

Ata"os de teclado
>tilice Herramientas .ersonali ar para abrir el di,lo$o personali*ar 1 seleccione la pesta&a #eclado. (mo asi$nar atajos de teclado se discute en el captulo 1D.

!vento
En /ibre.ffice, cuando sucede al$o decimos %ue ha ocurrido un e!ento. Por ejemplo, se abre un documento, se presiona una tecla o se mue!e el ratn. /ibre.ffice permite %ue los e!entos llamen a macrosE se dice entonces %ue la macro es un manipulador de e!ento. >na cobertura completa de los manipuladores de e!entos est, mu1 por encima del alcance de este documento, pero un poco de conocimiento puede ser 8til.
)ea cuidadoso cuando confi$ure un manipulador de e!entos. Por ejemplo, supon$amos %ue escribe un e!ento %ue se llama cada !e* %ue se presiona una tecla, pero comente un error 1 el e!ento no se manipula adecuadamente. >n resultado posible es %ue su e!ento consuma todas las pulsaciones del teclado obli$,ndole a cerrar /ibre.ffice a la fuer*a.

.recaucin

>tilice Herramientas .ersonali ar para abrir el di,lo$o Personali*ar 1 seleccione la pesta&a E!entos <!ea ?i$ura 11=. /os e!entos en el di,lo$o Personali*ar est,n relacionados con la aplicacin completa o con un documento especfico. >tilice la lista desple$able AGuardar enB para ele$ir /ibre.ffice o un documento especfico.

C$mo e.ecutar una macro

*1

@igura 1*A Asignar macro a una aplicaci$n a nivel de evento >n uso com8n es asi$nar el e!ento +brir documento para llamar a una macro especfica. /a macro entonces reali*a ciertas tareas de confi$uracin del documento. )eleccione el e!ento deseado 1 ha$a clic en el botn Macro para abrir el di,lo$o )elector de macro <!ea ?i$ura 1"= )eleccione la macro deseada 1 ha$a clic en Aceptar para asi$nar la macro al e!ento. /a pesta&a E!entos muestra %ue el e!ento se ha asi$nado a una macro <!er ?i$ura 1D=. (uando el documento se abre se ejecuta la macro Escribir3ola. 9uchos objetos en un documento se pueden confi$urar para %ue llamen a macros cuando ocurra un e!ento. El uso m,s com8n es a&adir un control, como un botn, en un documento. Cncluso hacer doble clic en un $r,fico abre un di,lo$o con la pesta&a 9acros para %ue pueda asi$nar una macro a un e!ento.

**

Primeros pasos con macros

@igura 13A Asignar una macro al evento Abrir documento

@igura 1,A +e )a asignado -scribirKola al evento Abrir documento

!)tensiones
>na e:tensin es un pa%uete %ue se puede instalar en /ibre.ffice para a&adir una nue!a funcionalidad. /as e:tensiones se pueden escribir en casi cual%uier len$uaje de pro$ramacin 1 puede ser simple o sofisticada. /as e:tensiones se pueden a$rupar en los tipos-

(omplementos de (alc, %ue pro!een nue!as funcionalidades para (alc, incluso nue!as
funciones %ue act8an como las funciones inte$radas normales. Hue!os componentes 1 funcionalidad, las cuales normalmente inclu1en al$8n ni!el de inte$racin en la C>, como nue!os men8s o barras de herramientas. Pilotos de datos %ue se usan directamente en (alc

(omplementos de (hart con nue!os tipos de $r,ficos. (omponentes lin$Tsticos como re!isores de orto$rafa. Plantillas de documento e im,$enes.

+un%ue las e:tensiones indi!iduales se pueden encontrar en diferentes lu$ares ha1 un repositorio de e:tensiones en )ttpAHHe?tensions libreo&&ice orgHe?tensionIcenter. Para saber m,s acerca de cmo obtener e instalar e:tensiones !ea el captulo 1D <Personali*ar /ibre.ffice=.

-?tensiones

*3

!scribir macros sin la grabadora


/os ejemplos cubiertos en este captulo han sido creados usando la $rabadora de macros 1 el dispatcher. Puede escribir macros %ue accedan directamente a los objetos comprendidos en /ibre.ffice. En otras palabras, puede manipular directamente un documento. 9anipular directamente los objetos internos de /ibre.ffice es un tema a!an*ado %ue !a m,s all, del alcance de este captulo. )in embar$o un ejemplo sencillo demuestra como funciona esto. Listado ,A ALadir el te?to BKolaC al documento actual

Sub Append)ello (im o(oc (im s"e1tService? (im oCurs REM "hisComponent se refiere al documento activo actualmente# o(oc ! "hisComponent REM 0erifica Jue esto es un documento de te1to s"e1tService ! 'com#sun#star#te1t#"e1t(ocument' If NH" o(oc#supportsService&s"e1tService* "hen Ms Bo1 'Esta macro solo funciona en documentos de te1to' E1it Sub End If REM Hbtiene la vista del cursor del controlador actual# oCurs ! o(oc#currentController# et0ie-Cursor&* REM Mueve el cursor hasta el final del documento# oCurs# otoEnd&$alse* REM Inserta el te1to ')ola' al final del documento# oCurs#"e1t#insertStrin &oCurs3 ')ola'3 $alse* End Sub

!ncontrar m*s in$ormacin


3a1 disponibles numerosos recursos %ue proporcionan a1uda para escribir macros. >tilice Ayuda Ayuda de #ibreO$$ice para abrir las p,$inas de a1uda de /ibre.ffice. /a es%uina superior i*%uierda del sistema de a1uda de /ibre.ffice tiene una lista desple$able %ue determina %ue $rupo de la a1uda se muestra. Para !er la a1uda para 7asic seleccione /ibre.ffice 5asic en la lista.

Material incluido
(on /ibre.ffice se inclu1en muchas macros e:celentes. >tilice Herramientas Macros Organi ar macros #ibreO$$ice %asic para abrir el di,lo$o de 9acros. E:tienda la biblioteca #ools en el contenedor de bibliotecas /ibre.ffice. Cnspeccione el mdulo Debu$ algunos buenos ejemplos son WritedbgInfo (documento) y printdbgInfo (hoja de clculo).

*,

Primeros pasos con macros

2ecursos online
/os si$uientes enlaces 1 referencias continen informacin acerca de pro$ramacin de macros)ttpAHHuser services openo&&ice orgH <?oros de .pen.ffice.or$, mu1 bien soportadoE los !oluntarios tambi n contestan pre$untas de /ibre.ffice= )ttpAHHapi openo&&ice orgHdocsHcommonHre&HcomHsunHstarHmoduleIi? )tml <Geferencia oficial de la CD/E a%u encontrar, la descripcin de casi cual%uier comando= )ttpAHH9i:i services openo&&ice orgH9i:iH(ocumentationH5A+6CMGuide <$ua oficial de pro$ramacin con /ibre.ffice 7+)C(= )ttpAHH9i:i services openo&&ice orgH9i:iH(ocumentationH(evGuideHLibre%&&iceM(evelopersMGuide <Gua oficial de desarrolladores de /ibre.fficeE contiene una e:plicacin detallada= )ttpAHH999 piton1a: orgHoo p)p <P,$ina de macros de +ndre0 Piton1a2= )ttpAHH999 piton1a: orgHAndre9Macro odt <Humerosos ejemplos de trabajar con macros= )ttpAHH999 piton1a: orgHboo:H </ibro sobre macros de +ndre0 Piton1a2= )ttpAHH999 piton1a: orgHdatabaseH <numerosas macros de ejemplo utili*ando 7ase= )ttpAHHdocs sun comHappHdocsHdocH718I=,38 </ibro de )un acerca de la pro$ramacin de macros Imu1 bien escrito 1 ordenadoE la $ua de pro$ramacin de /ibre.ffice 7+)C( 1 la Gua de desarrolladores de /ibre.ffice deri!an de este libro=.

Material impreso y e%oo-s


/os si$uiente libros est,n disponibles para la ad%uisicin a sus editores tanto en impreso como en e7oo2. %pen%&&ice org Macros -?plained de +ndre0 Piton1a2. 5ea )ttpAHH999 )entzen9er:e comHcatalogHoome )tm. Learn %pen%&&ice org +preads)eet Macro Programming de Dr. 9ar2 +le:ander 7ain 5ea )ttpAHH999 pac:tpub comHlibreo&&iceIlibreo&&icebasicIcalcIautomationHboo:.

-ncontrar m's in&ormaci$n

*/

You might also like