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
Creación de la tabla
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:
- en menú Insertar -> Tabla:
- Nombre: encabezado
- Filas: 4
- Columnas: 2
- Combinar las dos celdas de la fila 1
- Escribir contenido.
La apariencia final de la tabla:
Código de la macro
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
Pasos seguidos para crear la macro:
Abre el menú Herramientas -> Macros -> Organizar macros -> OpenOffice.org Basic, y en el diálgo que aparece:
- Macro desde: nombre del documento, biblioteca Standard , módulo Module1
- Nombre de la macro: incrementa
- pulsar botón Editar
- en el editor de Basic, escribir el código anterior.
Creación de un botón que activa la macro
Para comprobar el funcionamiento de la macro, he creado un botón en el documento, siguiendo estos pasos:
- menú Ver -> Barras de Herramientas -> Campos de control de formulario
- activar Modo Diseño
- activar Botón
y dibujar un botón en el documento.
- seleccionar botón dibujado y pulsar clic derecho -> Campo de control; modificar las siguientes propiedades:
- pestaña General -> Título: Incrementa factura
- en la pestaña Acontecimientos -> Botón del ratón pulsado asignar la macro incrementa
- en la barra de Campos de control, desactivar el botón Modo Diseño
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.
Ejecutar la macro cada vez que se guarda el documento
Si deseamos que la macro se ejecute cada vez que guardamos el documento, tan sólo debemos seguir estos pasos:
- menú Herramientas -> Personalizar
- pestaña Eventos
- seleccionar el evento Guardar documento y pulsar el botón Asignar macro.
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.
por hacer ...
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 |
- Versión para impresión
- Añadir nuevo comentario
- 54770 lecturas
Comentarios recientes
hace 5 años 15 semanas
hace 5 años 19 semanas
hace 5 años 19 semanas
hace 5 años 22 semanas
hace 5 años 32 semanas
hace 5 años 43 semanas
hace 6 años 5 días
hace 6 años 8 semanas
hace 6 años 34 semanas
hace 6 años 34 semanas