domingo, 25 de mayo de 2025

Interfaz. OOo Basic.

Escritura de datos en tabla


Mientras que [en esta entrada] planteamos cómo automatizar un documento basado en texto "plano", ahora nos fijaremos en cómo acceder a un campo de una tabla. Y como ya vimos [en otro momento] podemos considerar ambos tipos de documento como las tipologías básicas desde la perspectiva de la automatización documental.

En realidad lo que voy a plantear en esta entrada es doblemente inexacto, pero consideraremos que no lo es para una mejor didáctica de la comprensión del procedimiento: ni es la única forma de abordar el trabajo con tablas (también se puede hacer mediante instrucciones basadas en "lenguaje macro"), ni se puede considerar limitado al trabajo con ellas (también es posible usarlos para localizar texto dentro de texto preescrito). Me estoy refiriendo al procedimiento de escritura de datos en campos de tablas mediante marcadores.

Efectivamente, aunque existen otras opciones y aunque su utilidad no se limita al trabajo con tablas, lo cierto es que la combinación de OOo Basic y el uso de marcadores resulta ser, en mi opinión, el procedimiento más "limpio" y funcional para solucionar el reto que supone automatizar la escritura de documentos prescriptivos o que han devenido en tales y que se caracterizan por el uso de tablas. Es en estas donde el uso de marcadores se hace aun más necesario como medio de automatización de la escritura en posiciones concretas (campos de la tabla).

El procedimiento podría ser el siguiente:
  1. Acceder al documento portador de tablas.
  2. Establecer los marcadores en las celdas y/o en las posiciones del documento (Insertar | Marcador)
  3.  Crear el módulo para escribir el script (Herramientas | Macros | Organizar Macros | Basic).
  4. Desarrollar el script.
  5. Implementar un comando en el documento para facilitar el acceso al script 
Es importante insistir, aunque parezca obvio, en que ahora trabajamos sobre un documento con el que es muy posible que hayamos trabajado muchas veces sin macros, por lo que lo conocemos perfectamente y sabemos qué tipo de datos requiere, dónde se sitúa cada uno de ellos (y más si es un documento prescriptivo) y cuánto tiempo lleva cumplimentarlo.

Dado que lo urgente se impone siempre, es también muy probable que no hayamos pensando nunca (o muy pocas veces) en automatizarlo, pero hacerlo supone, en el medio plazo y a poco que lo usemos, un ahorro de tiempo considerable. Aunque para ello normalmente hace falta desarrollar un DocAp al completo, y no simplemente lo que ahora vamos a explicar.

Dim mDatos(4) As String, mMarcas() As String
Dim oMarca As Object
Dim i As Integer

mDatos(0) = InputBox("Fecha de la actuación:")
mDatos(1) = InputBox("Nombre del Servicio de Orientación:")
mDatos(2) = InputBox("Nombre del Orientador o de la Orientadora:")
mDatos(3) = InputBox("Nota:")

mMarcas() = Array ("m0","m1","m2","m3")

For i = 0 To UBound(mMarcas())
oMarca = ThisComponent.getBookmarks().getByName(mMarcas(i))
oMarca.getAnchor.setString(mDatos(i))
Next

Este script contiene dos matrices para facilitar el posterior desarrollo del script. El contenidos de ambas queda claro en el script.

Aunque en el planteamiento más simple no sería necesario, un script mínimamente realista los requiere. Gracias a ellas, al final del script es posible automatizar eficientemente la escritura de los datos en el documento mediante un bucle (For i = 0 To UBound(mMarcas())).

El uso de la función InputBox() es la herramienta que facilita la interacción con el usuario, la cual se basa en el comando inserto en el documento (Cumplimentar datos).

Es clave para el correcto funcionamiento del script el uso de la variable de objeto oMarca, que se asocia a las funciones que nos dan acceso a los objetos marcadores insertados en el documento en el punto 2 del procedimiento. Este proceso, que se desarrolla dentro del bucle comentado antes, lo hace en dos momentos:

  • Acceso al marcador (oMarca = ThisComponent.getBookmarks().getByName(mMarcas(i)))
  • Escritura de datos (oMarca.getAnchor.setString(mDatos(i)))
Obsérvese que en cada uno de ellos empleamos una de las matrices explicadas antes.

Es importante finalizar todo este trabajo creando dos documentos: uno en formato odt, como documento-base, y otro en formato plantilla (ott) que será el que utilicemos en la práctica. El documento-base queda como reserva para posibles modificaciones o mejoras, además de para a posible pérdida del documento plantilla.

Documentos. Desde este enlace puedes descargar la versión odt. Antes de hacer nada, te recomiendo que, una vez descargado, generes una copia como plantilla (Archivo | Guardar como).

No hay comentarios:

Publicar un comentario

Comenta esta entrada