jueves, 25 de abril de 2024

LENGUAJES. OOo Basic

Primero, las macros

Cuestiones introductorias

OOo Basic se presenta como lenguaje de macros. Pero aunque esta consideración sea correcta en el sentido amplio que se da al término "macro", en sentido estricto y también práctico, puede dar lugar a confusión ya que implica cierto reduccionismo que afecta negativamente a la valoración de la potencialidad que tiene el conocimiento del lenguaje. Por eso yo prefiero considerarlo un lenguaje de programación orientado y delimitado a la creación de script dentro de la suite ofimática LibreOffice (1).

De hecho uno puede trabajar con macros desde la funcionalidad Grabar macros y desconocer absolutamente el lenguaje OOo Basic, aunque lo que genera esa funcionalidad es precisamente una forma particular de código de este lenguaje.

El término "macro" es una simplificación de macroinstrucción, que se puede entender como la ejecución unitaria y sucesiva de un conjunto de órdenes o instrucciones. Aunque también podemos entenderla instrumentalmente como lo que resulta de hacer uso de la funcionalidad Grabar macro. Por eso considero que decir que OOo Basic es un lenguaje de macros resulta insuficiente cuanto menos.

Cierto es que el resultado de grabar una macro no deja de ser automatizar la ejecución de una serie de instrucciones que se presentan individualizadas e independientes cuando trabajamos directamente con el servicio (Writer por ejemplo); pero OOo Basic es mucho más: permite hacer mucho más y resulta mucho más complejo, útil y eficiente.

De hecho mientras que para crear una macro no hace falta más que tener clara la secuencia de acciones que deseamos automatizar (2), crear un script, una subrutina o una función ni es posible desde Grabar macro ni es posible hacerlo sin conocer el lenguaje con el que se va a trabajar.

Así que pasar de crear una macro a crear código (script) es pasar de utilizar una funcionalidad avanzada incorporada al servicio (3) a adentrarse en el mundo de la programación. Para ello, como sabemos, hace falta conocimiento de lógica de programación y del lenguaje.

A facilitar lo primero dedicamos gran parte de este blog, especialmente la sección en la que estamos. Pero volvamos a las macros, porque a pesar de sus limitaciones (4) generan un abanico de posibilidades que pueden pasar desapercibidas, cuando sólo usuamos Grabar macro. Estas posibilidades se esconden en el IDE, espacio de trabajo que está oculto, especialmente si la propia funcionalidad Grabar macro permanece también oculta.

Esa posibilidad no es de descartar, ya que no tiene por qué estar activada en la configuración inicial de LibreOffice, así que será mejor que empecemos rasgando estos velos.

Sabemos que para acceder a Grabar macro debemos activar el menú Herramientas | Macros. La primera de sus opciones es precisamente Grabar macro, pero cabe la posibilidad de que no aparezca (5). En ese caso, lo primero que tenemos que hacer es visibilizarla. Para ello:

  • Activamos la opción Herramientas | Opciones.
  • Dentro de las que se nos ofrecen activamos LibreOffice | Avanzado
  • Y en Opciones Java (a la derecha del menú anterior) encontramos Funcionalidades opcionales.
  • La funcionalidad Activar grabación de macros (limitada) se encontrará no seleccionada.
  • La seleccionaremos (clic en el check list correspondiente) y haremos clic en Aplicar y en Aceptar para cerrar la ventana del menú.

Ahora Grabar macro estará disponible y se visualizará como primera opción de Macros, lo que nos permite activar la llamada grabadora de macros, que consiste en una pequeña ventanita emergente...

... en cuyo botón Finalizar grabación deberemos hacer clic cuando haya terminado la secuencia de acciones que queremos automatizar. Lo que obtenemos como resultado es la posibilidad de realizar la repetición exacta y literal de la secuencia grabada y un contenido textual que no siempre esinteligible al no iniciado: estaremos visualizando, sin saberlo necesariamente, un acceso ocasional al IDE. Para evitar la pérdida del trabajo realizado es necesario comprender mínimamente el proceso a seguir.

Para ello vamos a simular que creamos una macro desde un nuevo documento. Por defecto, este documento no dispone aun de espacio propio para archivar la macro que creemos, algo que resulta imprescindible si deseamos que las macros queden vinculadas al propio documento y sean reproducibles (6).

Si creamos una macro activando Grabar macro y finalizamos el proceso tal y como expliqué antes, emerge automáticamente una ventana (una de las visualización del IDE, en realidad) que, por defecto, posicionará nuestra macro no en el documento desde el que la hemos creando, sino en Mis macros. Podemos guardarla ahí, pero es posible que después no sepamos cómo recuperarla, así que, al menos para empezar, es preferible guardarla en el propio documento.

Para ello, antes de finalizar el proceso, nos posicionaremos en el icono que representa nuestro documento (se sitúa al final del listado de componentes) y hacemos clic en Módulo Nuevo, aunque es suficiente con hacer clic en Guardar, ya que al no existir ningún módulo (ni carpeta o directorio), LibreOffice lo crea por defecto Module1, después de crear el directorio Standard.

Ahora nuestro archivo consta (en el IDE) de una carpeta Standard y un módulo Module1 donde está guardada nuestra primera macro. Las siguientes que grabemos lo será en esta ubicación, pero deberemos tener cuidado de darles un nombre propio, ya que de no hacerlo asumen Main (principal) como nombre por defecto para esta nuestra segunda macro (7).

Hasta aquí ya sabemos crear macros, pero hace falta usarlas, cosa que requiere un nuevo ajuste en el funcionamiento que por defecto tiene LibreOffice. Me refiero al nivel de seguridad con el que está inicialmente configurado, que impide la activación de macros (8).

Como seguramente este será nuestro caso (en estos momentos), deberemos modificar esa configuración inicial. Para ello:

  • Volvemos al menú Herramientas | Opciones
  • Seleccionamos ahora Seguridad y (a la derecha) hacemos clic en Seguridad de macros.
  • Se activa una ventana emergente que nos da cuatro opciones.
  • Personalmente yo opto por un nivel Medio de seguridad, por el control que me da sobre la activación o no de las macros. No recomiendo la opción Bajo para evitar posibles riesgos ni Alto por lo que complica el uso de macros personales, que es nuestro objetivo.
  • Sólo nos resta hacer clic en Aceptar para finalizar este proceso.

A partir de este momento, cuando carguemos en memoria un documento que contenga macros, antes de darnos acceso a él, LibreOffice nos informará que el documento contiene macros y nos dará la doble opción de activarlas no inhibirlas. Dado que pretendemos trabajar con nuestro código o con código de confianza (y sólo en esos dos casos) lo lógico es que permitamos la activación de macros, pero siempre será nuestra decisión y responsabilidad.

Toca ahora acceder a las macros que acabamos de crear para probar su funcionamiento. Para ello seguimos trabajando meramente con las funcionalidades de LibreOffice, ajenos aun a la creación de código y al que hemos creado sin saberlo. Para ello:

  • Seleccionamos la opción Herramientas | Macros | Ejecutar macro
  • En la ventana emergente Selector de macros nos posicionamos en el icono que representa nuestro documento y hacemos clic en la crucecita que precede al icono.
  • Se despliega su estructura de carpetas (biblioteca o librería Standard, es como se denomina a lo que aparece a continuación) y hacemos de nuevo clic en la crucecita que la precede (9).
  • Se muestra el contenido de Standard, en estos momentos únicamente Module1.
  • Haciendo clic en Module1 se muestra en Nombre de macro (ventana a la derecha de Biblioteca) el listado de las macros que hayamos creado.
  • Haciendo clic en una de las macros ésta se activará y ejecutará en el documento la secuencia de acciones que hayamos grabado.

Estaremos un rato entretenidos grabando y activando macros. Es necesario para que nos familiaricemos con esta funcionalidad, pero aunque resulte entretenido y útil, no tardaremos en descubrir también sus limitaciones (10).

Por suerte OOo Basic no sólo nos permite superar esas limitaciones. También nos va a permitir integrar las macros como parte de nuestro propio código, con lo que lo hecho hasta ahora no es sólo un divertimento ni tiempo perdido.

Hasta aquí hemos aprendido a crear macros mediante Grabar macro, demostrando saber usar funcionalidades complejas de la suite. Hemos activado esa opción (si no se encuentra disponible), sabemos guardar nuestras macros en el documento, regular el nivel de seguridad con el que queremos trabajar y somos capaces de activar nuestras macros para que trabajen por nosotros.

No son pocas las habilidades que hemos aprendido hoy, pero lo verdaderamente interesante y útil está aun por llegar. De momento, podemos dar un formato complejo a un texto, crear tablas, listados y contenido, pero también hemos podido comprobar que si queremos dirigir un documento a una persona concreta, citar por su nombre a un niño o a un profesor, informar de una hora y un lugar concretos o comentar los resultados del alumno en un área del currículo nos vemos obligados bien a crear una macro específica para cada caso, situación o contenido concreto... o a modificar el texto que crea la macro sustituyendo unos datos por otros. En estas circunstancias, Grabar macro es de poca ayuda... o de ninguna.

Como ya dije, OOo Basic nos permite superar esas limitaciones. Por eso es importante que aprendamos ahora los elementos básicos de este lenguaje. Una vez que los hayamos aprendido, podremos volver sobre nuestras macros para aprovechar mucho y bien lo que nos aportan. Pero, de momento, deberemos hacer un alto en este camino y recorrer otro más largo, pero necesario y muy interesante. No se trata precisamente de la travesía de ningún desierto, aunque se requiere paciencia, estudio, práctica y esfuerzo. Merece la pena.

NOTAS
1 También, y primeramente, OpenOffice.
2 Secuencia Herramientas | Macros | Grabar macro.
3 Crear macro no es la única ni quizá la más útil de esa categoría de funcionalidades. Desde la perspectiva del usuario, particularmente interesante me parece Combinar correspondencia o el uso de formularios, ya que permiten dotar a los documentos de recursos muy interesantes de cara al trabajo de los profesionales de los SEO. No obstante, Grabar macro es la puerta lógica de acceso a la programación mediante OOo Basic y eso nos permite ir mucho más allá en la creación de recursos adaptados a nuestras necesidades de lo que podemos avanzar con las demás.
4 De por sí, una macro no aporta gran cosa de utilidad, salvo quizá en procesos complejos de formato y la automatización de la escritura de contenido invariable. Es necesario recurrir al uso de variables para personalizar el contenido textual, algo que requiere conocimiento del lenguaje de programación.
5 En ese caso, la primera opción visible será Ejecutar macro, pero el usuario no iniciado en el uso de macros no obtendrá ninguna utilidad de ella, ya que no se pueden ejecutar macros que no se han creado.
6 Tendremos ocasión de comprobar que ésta no es la única opción, pero por el momento eso no nos interesa ni nos resuelve nuestro problema actual; al contrario, puede resultar engañoso.
7 La primera es posible que haya sido guardada por defecto como Macro1. Si no queremos sustituirla por la segunda macro no la seleccionaremos. Hay que observar que en Nombre de macro consta aquella en que se ubica la funcionalidad Grabar macro, pero podemos cambiar ese nombre por cualquier otro (sin espacios en blanco), de modo que no sustituyamos una macro ya creada por la nueva.
8 Esto es debido al riesgo que comporta el uso de código no seguro, categoría en la que se considera están las macros, dado que potencialmente pueden haber sido pensadas como software malicioso. Dado que somos nosotros quienes creamos macros en nuestro beneficio, este no es el caso, pero LibreOffice no lo sabe y se impone la cautela.
9 Como dije antes (7), y ahora concreto más, al crear nuestro Module1 se crea automáticamente este directorio que, por su naturaleza de contender de código, se denomina Biblioteca en español, pero se conoce más como Librería por esa fea costumbre que tenemos de traducir literalmente los términos ingleses (Library).
10 En cuanto a utilidad estoy pensando en el formateo de documentos o en su estructuración, por ejemplo. Las limitaciones son evidentes, pero Grabar macro no deja de ser una buena solución, definitiva en ciertos casos, provisional en otros y complementaria en tercer lugar.

No hay comentarios:

Publicar un comentario

Comenta esta entrada