Download - Macros en Libreoffice
MACROS EN LIBREOFFICE
1
Prof. Elar Edgar, HANCCO QUISPE
1. Cuadro de diálogo (formulario) para OpenOffice Calc
En este Cómo se hace vamos a mostrar paso a paso como se puede
crear un cuadro de diálogo mediante el editor Basic de OpenOffice para
introducir datos en una hoja de Calc.
Para poder llevar a buen puerto este tutorial, empezaremos por crear un
nuevo documento de Calc, que guardaremos con el nombre Cuadro de
diálogo Calc.
En la primera de sus hojas insertaremos un botón que nos permitirá abrir
el cuadro de diálogo. Los datos que introduciremos en él quedarán
almacenados en la Hoja2 del documento.
No se va a crear una aplicación completa. El objetivo de este tutorial es
introducir al usuario en la creación y uso de los cuadros de diálogo en
Calc, lo que le permitirá construir fácilmente sencillas aplicaciones para
gestionar pequeñas o grandes cantidades de datos, ampliando según lo
aquí aprendido su documento de Calc con más diálogos, en función de
sus necesidades.
2. Insertar un botón en la hoja
Empezaremos insertando un botón en la Hoja1 del documento que
permitirá abrir el cuadro de diálogo que, a modo de formulario flotante,
diseñaremos a continuación.
Para ello, si no está visible, mostraremos la barra de herramientas
Campos de control de formulario desde el menú Ver > Barras de
herramientas.
MACROS EN LIBREOFFICE
2
Prof. Elar Edgar, HANCCO QUISPE
Haremos un clic en esta barra de herramientas sobre el botón Botón. El
cursor del ratón se mostrará como una pequeña cruz negra con un
pequeño rectángulo en su extremo inferior derecho.
Sobre el lugar deseado de la hoja de cálculo, haremos un clic y arrastrar,
definiendo de esta forma las dimensiones del botón.
Las dimensiones del botón podrán modificarse utilizando sus
manejadores de color verde.
Con el botón seleccionado haremos clic sobre el botón Control de la
barra de herramientas Campos de control de formulario, o bien,
haremos un clic con el botón secundario del ratón sobre el botón, y
desde el menú contextual seleccionamos la opción Campo de control....
Se mostrará el cuadro de diálogo Propiedades: Botón.
En éste, modificaremos el Título escribiendo Abrir el diálogo desde su
pestaña General. De esta forma modificamos el texto que muestra el
MACROS EN LIBREOFFICE
3
Prof. Elar Edgar, HANCCO QUISPE
botón recién insertado. Si lo deseas, puedes modificar otras propiedades
del botón, como por ejemplo, la Fuente utilizada para el texto mostrado,
sus dimensiones mediante las propiedades Ancho y Altura, la
Alineación horizontal y la Alineación vertical del texto mostrado, el
Color de fondo del botón, incluso insertar una pequeña imagen (en
formato bmp, jpg, png, etc) a modo de icono en el mismo mediante la
propiedad Imagen.
Si quieres conocer más acerca de otras de las propiedades que puedes
definir para el botón, pulsa la tecla F1 mientras esté activado el diálogo.
Por el momento, podemos cerrar este diálogo, al que volveremos más
tarde.
MACROS EN LIBREOFFICE
4
Prof. Elar Edgar, HANCCO QUISPE
3. Crear el cuadro de diálogo
Accedemos al editor de macros IDE Basic desde el menú Herramientas
> Macros > Organizar macros... > OpenOffice.org Basic.
Localizamos el contenedor de macros de nuestro documento. Haciendo
clic en el + que antecede a su nombre, se mostrará la librería Standard,
que por el momento está vacía, y que seleccionamos con un clic sobre
su nombre.
Haciendo un clic sobre el botón Nuevo creamos un nuevo módulo Basic;
se presentará un diálogo sugiriendo el nombre del nuevo módulo como
Module1', nombre que aceptamos porque nos es indiferente.
MACROS EN LIBREOFFICE
5
Prof. Elar Edgar, HANCCO QUISPE
Se mostrará el editor IDE Basic. Justo en la parte inferior del mismo, se
muestra una pestaña con el nombre Module1. Haremos clic con el botón
secundario del ratón sobre la pestaña, y del menú contextual
seleccionamos la opción Insertar > Diálogo BASIC.
El editor IDE Basic presentará una nueva pestaña, de nombre Dialog1,
con un pequeño diálogo dibujado en el centro de la misma, y se
mostrará también la barra de herramientas flotante Cuadro de
herramientas. Si no se muestra, puedes utilizar la opción que
encontrarás en el menú Ver > Barras de herramientas
Haremos un clic con el botón secundario sobre la pestaña del diálogo, y
seleccionamos Renombrar para cambiar su nombre a Dialogo.
MACROS EN LIBREOFFICE
6
Prof. Elar Edgar, HANCCO QUISPE
4. Insertar los controles en el diálogo
Utilizando los botones disponibles en la barra de herramientas Cuadro
de herramientas y siguiendo el mismo método que hemos utilizado para
insertar el botón en la hoja de Calc (clic y arrastrar) insertaremos:
Tres etiquetas utilizando el botón Etiqueta
Tres campos de texto utilizando el botón Campo de texto
Dos botones utilizando el botón Botón
Cambiaremos los textos de las etiquetas y de los botones siguiendo el
mismo método que con el botón insertado en la hoja de Calc (si bien,
para acceder al diálogo de propiedades, el botón ahora se llama
Propiedades, al igual que la opción del menú contextual del control).
Haciendo un clic justo sobre el borde del diálogo podemos editar sus
propiedades; así, asignaremos como Título de nuestro cuadro de
diálogo Agregar contactos; una vez hechos todos estos cambios,
deberemos obtener un resultado similar al mostrado en la siguiente
imagen:
MACROS EN LIBREOFFICE
7
Prof. Elar Edgar, HANCCO QUISPE
Guarda tu trabajo haciendo clic sobre el botón Guardar.
5. El código Basic necesario
Haz clic sobre la etiqueta del módulo Module1. Teclea o mejor, copia y
pega, el siguiente código sustituyendo el código existente en el módulo:
Rem ***** BASIC *****
Dim oDialogo As Object
' Abre el diálogo de nombre Dialogo
Sub Mostrar_Dialogo
DialogLibraries.LoadLibrary("Standard")
oDialogo=Createunodialog(DialogLibraries.Standard.Dialogo)
oDialogo.Execute()
End Sub
' Cierra el diálogo
Sub Cerrar_Dialogo
oDialogo.EndExecute()
Msgbox "Gracias por la visita. Vuelve pronto !!!", 64, "Diálogo
en Calc"
End Sub
' Almacena los datos en la siguiente línea disponible de la Hoja2, y
vacía los datos del formulario
Sub Guardar_Datos
Dim xDato As Variant, nRow As Long
If Msgbox( "¿Deseas guardar los cambios realizados?", 33,
"Diálogo en Calc" ) = 1 Then
nRow = UltimaFila( 1 )
With oDialogo.Model
xDato = .TextField1.Text
Thiscomponent.Sheets(1).getCellByPosition(0,nRow).SetFormula(
xDato )
xDato = .TextField2.Text
Thiscomponent.Sheets(1).getCellByPosition(1,nRow).SetFormula(
xDato )
xDato = .TextField3.Text
Thiscomponent.Sheets(1).getCellByPosition(2,nRow).SetFormula(
xDato )
MACROS EN LIBREOFFICE
8
Prof. Elar Edgar, HANCCO QUISPE
.TextField1.Text = ""
.TextField2.Text = ""
.TextField3.Text = ""
End With
End If
End Sub
' Calcula cual es la primera línea disponible en la hoja
Function UltimaFila( nHoja As Integer ) As Long
Dim Hoja As Object, n As Long
Hoja = Thiscomponent.Sheets(nHoja)
n = 0
Do While True
If Hoja.getCellByPosition(0,n).GetFormula = "" Then
Exit Do
End If
n=n+1
Loop
UltimaFila = n
End Function
6. Guarda tu trabajo.
No vamos a explicar que hace cada subrutina; sus nombres son
suficientemente explicativos. Cómo lo hacen, tampoco lo explicamos. No
es el objetivo de este tutorial. Como cualquier código, es susceptible de
ser mejorado. Esperamos tus aportaciones :).
7. Enlazar los controles al código
Nos queda muy poco trabajo por hacer. Vamos a enlazar los controles
del diálogo al código. Haz clic sobre la pestaña del diálogo Dialogo.
Selecciona el primer botón, y muestra la ventana Propiedades. En la
pestaña Acontecimientos haz clic sobre el botón con tres puntos
mostrado al final de la línea correspondiente al evento Botón del ratón
pulsado.
Se mostrará el diálogo Acción asignada. Haz clic ahora sobre el botón
Macro
MACROS EN LIBREOFFICE
9
Prof. Elar Edgar, HANCCO QUISPE
Se mostrará el diálogo Selector de macro. Selecciona el módulo
Cuadro de diálogo Calc.ods > Standard > Module1 en la lista
Biblioteca. En la lista Nombre de macro selecciona la macro
Guardar_Datos. Haz clic sobre el botón Aceptar.
El diálogo Acción asignada se muestra ahora así. Haz clic sobre el
botón Aceptar
MACROS EN LIBREOFFICE
10
Prof. Elar Edgar, HANCCO QUISPE
El diálogo Propiedades:CommandButton se muestra como ves en la
imagen.
MACROS EN LIBREOFFICE
11
Prof. Elar Edgar, HANCCO QUISPE
Selecciona el segundo botón, y realiza los mismos pasos para asignar la
macro Cerrar_Dialogo. Cierra la ventana Propiedades y guarda tu
trabajo.
Cierra el editor IDE Basic. Ya hemos terminado con la parte dura. Nos
queda un último detalle.
8. Enlazar el botón de la hoja al diálogo
Ahora enlazaremos el botón que situamos en la hoja de cálculo a la
macro que abre el diálogo. Desde la barra de herramientas Campos de
control de formulario activa el Modo diseño si no está activado, y
selecciona con un clic el botón.
Abre el diálogo Propiedades:Botón desde el botón Control de la
misma barra de herramientas. Activa la pestaña Acontecimientos.
Asignaremos por el mismo procedimiento que vimos antes la macro
Mostrar_Dialogo al evento Botón del ratón pulsado.
Guarda tu trabajo.
Desde la barra de herramientas Campos de control de formulario
desactiva el Modo diseño.
Haz un clic sobre el botón. Si has seguido fielmente los pasos, y
nosotros lo hemos explicado correctamente, deberás ver el cuadro de
diálogo sobre la hoja de cálculo.
MACROS EN LIBREOFFICE
12
Prof. Elar Edgar, HANCCO QUISPE
Prueba a completar los datos y pulsar sobre los botones para comprobar
que funciona. Recuerda que los datos se almacenan en la Hoja2.