Introducción rápida al uso de macros y controles en IBM Lotus Symphony

Este artículo proporciona orientación paso a paso para introducirlo a la programación de macros para IBM® Lotus® Symphony™ en OpenOffice.org BASIC. El artículo presenta el editor de macros, muestra cómo agregar un objeto de control a un documento de Lotus Symphony, explica cómo asociar un evento de control a una macro y realiza una introducción al acceso a datos en una hoja de cálculo de Lotus Symphony.

Tim Robinson, Senior Software Engineer, IBM

Tim Robinson (timro@us.ibm.com) es Senior Software Engineer y trabaja en el equipo IBM Innovation Center en San Mateo, California. Dentro de este equipo, aporta profundos conocimientos y estrategia en seguridad de redes, sistemas abiertos e infraestructura dinámica. No conforme con limitarse a la migración de aplicaciones de productividad comunes a IBM Lotus Symphony, hoy Tim se encuentra trabajando para aprovechar al máximo esta innovadora plataforma.



22-12-2009

Nota del editor: ¿Es experto en este tema? ¿Quiere compartir sus conocimientos? Participe hoy en el programa wiki del software IBM Lotus.

Introducción

IBM Lotus Symphony soporta la programación de macros a través del lenguaje OpenOffice.org Basic. Comience a usar sus propias extensiones a documentos Lotus Symphony en tan sólo 3 pasos:

  1. Abra el editor de macros y escriba su código.
  2. Agregue un control a su documento de Lotus Symphony.
  3. Asocie la macro con un evento del control.

En este artículo explicaremos estos tres pasos para un programa simple. Luego, ilustraremos con un ejemplo más práctico cómo usar el modelo de componentes Universal Network Objects (UNO) para consultar datos de una hoja de cálculo de Lotus Symphony.


Creación de macros

Las macros en Lotus Symphony se almacenan dentro de módulos. Para organizar los módulos, se usan bibliotecas que pueden adjuntarse a un documento o una plantilla. En este primer ejemplo se crea un documento y luego se agrega un nuevo módulo a la biblioteca estándar correspondiente al documento creado. Puede usar el editor de macros para editar el contenido del módulo agregando el código del programa simple y luego guardar el módulo nuevo con la macro.

Abrir el editor de macros

Abra Lotus Symphony y siga los siguientes pasos:

  1. Seleccione File (Archivo) - New (Nuevo) – Spreadsheet (Hoja de cálculo). (Si bien los ejemplos usan una hoja de cálculo, también se podrían utilizar otros tipos de documentos OpenDocument)
  2. Con la hoja de cálculo abierta, seleccione Tools (Herramientas) - Macro - Macro para visualizar el diálogo de macro. Ver Figura 1.
  3. En el navegador izquierdo, seleccione la Standard Library (Biblioteca estándar) del Untitled Document (Documento sin nombre) (este nombre cambia al guardar el documento).
  4. Haga clic en el botón New (Nuevo), y acepte el nombre de módulo predeterminado (Module1) haciendo clic en el botón OK.
Figura 1. Abrir el editor de macros en un nuevo módulo
Opening the macro editor on a new module

Ahora se visualiza el editor de macros como muestra la Figura 2.

Figura 2. Editor de macros
The macro editor

En esta primera macro, quite las plantillas y agregue su propio procedimiento (SUB) al contenido del editor. Siga los siguientes pasos:

  1. Seleccione todo el texto ubicado debajo de la instrucción REM y luego elimínelo.
  2. Agregue este código en el editor:

    Sub HelloWorld
    MsgBox "Hello World"
    End Sub
  3. Haga clic en el botón Compile (Compilar) mostrado en la Figura 3 y luego haga clic en el botón Run (Ejecutar) mostrado en la Figura 4. Se visualizará un mensaje simple con el texto Hello World, como muestra la Figura 5.

    Figura 3. Compile
    Compile
    Figura 4. Run
    Run
    Figura 5. Resultados
    Results

Para borrar el mensaje, haga clic en el botón OK.

Guardar el trabajo

Niveles de seguridad de macros

Never (Nunca): Desactive todas las macros del documento excepto las ingresadas en el editor de macros o cargadas manualmente.

According to path list (De acuerdo a de lista de ruta de acceso): Ejecuta únicamente las macros del documento correspondientes a documentos ubicados en las rutas de acceso especificadas.

Safe mode (modo seguro): Ejecuta las macros del documento en base a los eventos asignados, a excepción de las API no seguras que incluyan APIs UNO y métodos de tiempo de ejecución StarBasic desactivados.

Always (Siempre): Ejecuta todas las macros del documento, sea cual sea su fuente.

Ahora que ya ha establecido su macro, es recomendable guardar el documento Lotus Symphony; si lo hace de manera automática, la macro se guardará junto con el documento. Seleccione File - Save As (Guardar como) e ingrese un nombre en la ventana. Deje el tipo de archivo en la configuración predeterminada. Las capturas de pantalla mostradas a continuación se basan en el nombre Hello.ods.

Activar la ejecución de macros desde documentos

Antes de comenzar a asociar controles a su nueva macro, verifique y actualice las preferencias de Lotus Symphony para permitir que las macros se almacenen en documentos a ejecutarse. La configuración predeterminada desactiva las macros de documentos cargados para reforzar la seguridad, pero debido a que usted necesita ejecutar macros de archivos guardados, deberá modificar esta configuración de preferencia. Consulte la barra lateral “Macro security levels” (niveles de seguridad de macros) para obtener más información acerca de los niveles de seguridad disponibles.

Siga los siguientes pasos:

  1. Seleccione File – Preferences y luego haga clic en el botón con un signo más (+) correspondiente a IBM Lotus Symphony y al elemento de Macro Security (seguridad de macros).
  2. Cambie Run Macros: list item (Ejecutar macros: elemento de lista) a Always y luego seleccione la opción Show warning before running (Mostrar advertencia antes de ejecutar) como muestra la Figura 6.

    Figura 6. Activar macros
    Enabling macros
  3. Haga clic en el botón OK para actualizar las preferencias de Lotus Symphony.

Cuando vuelva a abrir este documento, un aviso le preguntará si desea permitir la ejecución de las macros guardadas dentro del documento.


Agregar un control a un documento

Ahora que ya ha establecido una macro, el próximo paso es agregar un control al documento. Para realizar este paso, debe activar el modo de diseño en el documento, agregar un control y luego configurar una serie de atributos del control.

Ir al modo de diseño

Primero deberá activar la barra de herramientas Form Functions (Funciones de forma) para que se muestren íconos que lo ayudarán a agregar controles al documento.

Siga los siguientes pasos:

  1. Seleccione View (Vista) – Toolbar (Barra de herramientas) y seleccione el elemento de la barra de herramientas Form Functions (si no está seleccionado).
  2. Haga clic en el ícono Design Mode On Modo de diseño activado) en la barra de herramientas. Ver Figura 7.
Figura 7. Activar el modo de diseño
Turn on design mode

En este ejemplo simple, usaremos un botón de control. Seleccione el ícono Push Button (Botón pulsador) y mueva el puntero del mouse hacia el documento. Arrastre el control y suéltelo en el documento. No se preocupe por el tamaño y la ubicación del control, ya que podrá cambiarlos después mediante los controladores de posicionamiento. Ver Figura 8.

Figura 8. Control Push Button agregado
Push Button control added

Modificación del control

Si desea modificar el control, siga los siguientes pasos:

  1. Para cambiar el nombre del control de botón y el texto de ayuda que se muestra cuando se apoya el mouse sobre él, haga clic derecho en el control de botón y seleccione Control.
  2. Ubíquese en la pestaña General. En la etiqueta Field (Campo), cambie el valor de Button a “Say Hello”. Luego, pase al campo inferior y, en el campo Help text (Texto de ayuda), ingrese “Click here for a friendly greeting”. Ver Figura 9.
    Figura 9. Actualizar propiedades del control
    Update control properties
  3. Cierre el diálogo de Propiedades.

Observe que al apoyar el mouse sobre el control de botón, se visualiza el texto agregado como texto de ayuda. Ahora debemos asociar este control con la macro creada anteriormente.


Asociar una macro con un evento de un control

Para asociar una macro con un evento de un control, siga los siguientes pasos:

  1. Manteniéndose en el modo de diseño, haga clic derecho en el control de botón y seleccione Control.
  2. Seleccione la pestaña Events. Haga clic en el botón ubicado a la derecha del campo presionado del botón Mouse para visualizar el diálogo Assign Macro (Asignar macro).
  3. En el cuadro de navegación ubicado en la parte inferior izquierda, despliegue la lista Hello BASIC Macros y luego despliegue la lista Standard library.
  4. Seleccione el módulo Module1 y la macro nueva aparecerá seleccionada automáticamente como muestra la Figura 10.
    Figura 10. Asignar la macro al control
    Assign the macro to the control
  5. Haga clic en el botón Assign (Asignar). Observe que ahora el evento se encuentra asociado con la macro de la biblioteca y el módulo.
  6. Haga clic en el botón OK para cerrar el diálogo Assign Macro.

Probar el control

Lo único que nos resta hacer es dar la ubicación y el tamaño deseado al control de botón. Luego desactivaremos el modo de diseño para probar el control. Cuando haya ajustado la ubicación y el tamaño del botón, desactive el modo de diseño haciendo clic en el ícono Design Mode On. Ver Figura 11.

Figura 11. Desactivar el modo de diseño
Turning design mode off

Luego de desactivar el modo de diseño, notará que la mayoría de los íconos de la barra de herramientas Form Function toolbar se encuentran desactivados; únicamente los íconos Select y Design Mode On han quedado activos. Con el modo de diseño desactivado, haga clic en el control de botón. Cuando presione el control de botón, se visualizará el mensaje mostrado en la Figura 12.

Figura 12. Hello World
Hello World

Ahora ya maneja los conceptos básicos. A continuación veremos un ejemplo práctico que combina un control de botón con una macro más compleja.


Puesta en práctica

Este ejemplo más detallado se refiere a un caso en el que se usa una hoja de cálculo Lotus Symphony para realizar el seguimiento de un grupo de proyectos. Se busca asignar a cada proyecto un código de identificación de proyecto de cuatro dígitos único y aleatorio. Al agregar un nuevo proyecto, el gerente de proyecto hace clic en un botón de la hoja de cálculo y obtiene el código de identificación del proyecto. Ahora analicemos el código que se debe agregar a la macro para lograr esta tarea.

Generación de números aleatorios

En este escenario, su macro debe crear códigos numéricos de cuatro dígitos entre los valores 0000 y 9999. Para obtener un valor dentro de este rango, puede multiplicar el resultado de la función Rnd() por 10000 y descartar los valores decimales. Antes de llamar a la función Rnd(), deberá realizar una llamada al procedimiento Randomize para inicializar el generador de números aleatorios. Como el resultado se expresa en una variable de número entero, el mensaje que muestre el valor deberá usar un código de formato de cuatro caracteres que coloque ceros a la izquierda en los códigos inferiores a 1000. El Listado 1 muestra un procedimiento que lleva a cabo todo esto.

Listado 1. Macro para generar y mostrar un código numérico de cuatro dígitos
Sub myRandom Dim iCode as Integer Randomize iCode =
Int((10000* Rnd)) REM value between 0000-9999 MsgBox Format(iCode,"0000"),0,"Random
Code" End Sub

Si la posibilidad de que se asigne un mismo código a más de un proyecto no resulta problemática, esta macro será suficiente para cumplir con lo requerido.

Establecer un valor de código único

La cantidad total de proyectos incluidos en esta herramienta es reducida (probablemente no supera los 100 proyectos). En este tipo de casos, el enfoque que se emplea para establecer un código único se basa en realizar una búsqueda en los datos de la hoja de cálculo actual y verificar que el código candidato no genere ninguna coincidencia con los códigos de los proyectos existentes. Siempre que la cantidad de códigos aleatorios potenciales sea elevada en comparación con la cantidad de registros que se verifican, este enfoque simple resulta eficiente.

Para efectuar el procesamiento de datos de la hoja de cálculo dentro de una macro, se usa una pequeña porción de la API Universal Network Objects (UNO). La API Lotus Symphony se basa en UNO, que es el modelo de componentes de OpenOffice.org. Existen varios enlaces de lenguajes con UNO, entre ellos, BASIC. Aunque parezca algo complejo, este modelo de componentes puede aplicarse fácilmente para acceder a los valores de celdas de una hoja de cálculo.

Siga los siguientes pasos:

  1. Obtenga un objeto asociado a la hoja de cálculo actual utilizando el método getSheets.getByIndex.
  2. Consulte el objeto de hoja de cálculo para obtener un objeto de celda con el método getCellByPosition, el cual acepta un valor de columna y de fila.
  3. Consulte el objeto de celda con el método de valor para obtener el contenido numérico de la celda.

El código de macro final del Listado 2 muestra los accesos del modelo de componentes UNO en negrita.

Listado 2. Macro para generar un único código numérico de cuatro dígitos
Sub randomCode Dim iCode as Integer Dim oSheet as
Object Dim oCell as Object Dim bMatch as Boolean oSheet =
thisComponent.getSheets.getByIndex( 0 ) bMatch = True Randomize Do While
bMatch = True iCode = Int((10000* Rnd)) REM value between 0000-9999 bMatch = False
For iCount = 0 To 499 oCell = oSheet.getCellByPosition( 0, iCount ) If
( oCell.value = iCode ) Then bMatch = True End If Next Loop MsgBox
Format(iCode,"0000"),0,"Random Code" End Sub

Esta macro usa un bucle For ... Next para explorar las primeras 500 filas de la primera hoja de trabajo de la hoja de cálculo Lotus Symphony y busca posibles coincidencias en la primera columna. Para controlar el estado de la exploración se usa la variable Boolean bMatch. Si se encuentra una coincidencia, el bucle Do While ... repite el ciclo con un nuevo código aleatorio hasta que la exploración de las filas no registre coincidencias.

La Figura 13 muestra una hoja de cálculo con algunas filas de proyectos y el resultado de la macro.

Figura 13. La macro en funcionamiento
The macro in action

Al igual que el cuadro de mensaje, la primera columna de la hoja de cálculo se ha personalizado con un código de formato de 0000 para garantizar la generación de códigos de cuatro dígitos aún cuando el número asignado tenga menos dígitos con valor.

Si bien este ejemplo usó un mensaje para dar el código aleatorio al gerente de proyecto a través de una búsqueda en la hoja de cálculo, una mejora sencilla sería usar el método getCurrentSelection UNO sobre el documento actual para encontrar una ubicación y poblarla con un código único. De esta manera, el gerente de proyecto no necesitaría copiar el código del mensaje.


Conclusión

Usted ha aprendido los conceptos básicos de la programación de macros de Lotus Symphony en lenguaje OpenOffice.org BASIC. A lo largo de este artículo, aprendió a crear y organizar macros, a activar la ejecución de macros en documentos y a asociar eventos incluidos en controles con macros. Puede obtener más información acerca de éste y otros temas relacionados siguiendo los vínculos de la sección Recursos.


Agradecimientos

El autor agradece a Paul Bastide, IT Specialist, Lotus Symphony, IBM, por realizar la revisión de este artículo.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Lotus
ArticleID=458405
ArticleTitle=Introducción rápida al uso de macros y controles en IBM Lotus Symphony
publish-date=12222009