En esta sección, que esperamos merezca un gran interés, iremos agregando las recetas relativas a la automatización de OpenOffice.org, mediante macros y lenguaje Basic
De forma recurrente, y cada vez con mayor interés, se solicita información para automatizar tareas en OpenOffice.org. Iré añadiendo en esta página los enlaces a manuales y recursos que puedan servir para dar nuestros primeros pasos.
Además de las citadas, encontraréis diversos ejemplos en la sección de documentación del proyecto de OpenOffice.org en lengua española. Otros sitios muy interesantes al respecto:
Si conocéis algún otro recurso que he omitido, escribid un comentario con el enlace y lo añadiré a la página.
Adjunto | Tamaño |
---|---|
Aprendiendo_OOoBasic.odt | 7.02 MB |
Aprendiendo_ejemplos.zip | 689.49 KB |
Esta pequeña macro ha sido inspirada por Joan Martinez Seres (Linux BCN), en un mensaje a la lista de correo de Badopi en el que solicitaba la manera de crear una plantilla para facturas en OpenOffice.org que incrementase automáticamente el número de factura.
De paso, me ha servido para repasar un poco eso de las macros en el Basic de OpenOffice.org, que tengo muy olvidadas a causa de mi falta de tiempo.
El documento autoincremento.odt con la macro creada puedes descargarla al pie del artículo donde aparece como anexo
He optado por crear una tabla a la que he denominado encabezado, en cuya celda B3 (columna 2, fila 3) he ubicado el número de factura. Pasos seguidos:
La apariencia final de la tabla:
La forma de abordar la tarea ha sido crear una macro que obtenga el contenido de esa celda y lo incremente. Éste es el código:
Sub incrementa
Dim oTablas As Object
Dim oTabla As Object
Dim oCelda As Object
Dim numfra As String
' localiza celda
oTablas = ThisComponent.getTextTables()
oTabla = oTablas.getByName("encabezado")
oCelda = oTabla.getCellByName("B3")
' obtiene numfra
numfra = oCelda.getString
' incrementa numfra
numfra = str$(val(numfra) + 1)
' escribe numfra
oCelda.setString(numfra)
End Sub
Abre el menú Herramientas -> Macros -> Organizar macros -> OpenOffice.org Basic, y en el diálgo que aparece:
Para comprobar el funcionamiento de la macro, he creado un botón en el documento, siguiendo estos pasos:
Ahora, ya podemos comprobar como pulsando el botón que hemos creado, el contenido de la celda con el número de factura se incrementa automáticamente. Si borramos el contenido de la celda, la siguiente pulsación del botón nos mostrará el número 1.
Si deseamos que la macro se ejecute cada vez que guardamos el documento, tan sólo debemos seguir estos pasos:
Ahora comprobemos que cada vez que modificamos y guardamos el documento, el número también se incrementa automágicamente.
Habría otras maneras de abordar la tarea; por ejemplo, el número podría estar fuera de una tabla, en cuyo caso podríamos asignarle un marcador y en el código deberíamos usar el método apropiado (¿getTextBookmarks?) en vez de getTextTables. Me ha parecido, dada mi bisoñez con estas macros, que usar una tabla sería lo más facil de manejar, además de que para el caso que se trata (un modelo de facturas) es lo más habitual.
Lo que no he sido capaz de solucionar es como guardar el documento como plantilla, de manera que en la propia plantilla se incremente el número cada vez que se crea un nuevo documento a partir de la plantilla. Queda como proyecto para cuando haya más tiempo para estudiar. ;-)
Adjunto | Tamaño |
---|---|
autoincremento.odt | 32.36 KB |
Otro video tutorial de Alexandro Colorado del Grupo de Usuarios de Linux de Tabasco (México), que nos deleita con su agradable voz mientras nos ilustra en los primeros pasos de creación de macros en OpenOffice.org.
Disponible en:
http://superalumnos.net/files/oobasic.swf (Flash - 1,9 MB)