jueves, 9 de mayo de 2024

OOo Basic. Archivos.

Acceso a un documento existente

Además de crear nuevos documentos mediante OOo Basic, también es posible acceder a un documento ya creado desde otro que consideramos documento-base. Para ello, y en primer lugar, debemos recordar lo visto en [esta entrada], pero necesitamos algo más. Ese "algo más" es lo que expondré en esta entrada.



Crear un [nuevo documentomediante un script nos aporta muchas posibilidades para nuestro trabajo como SEO, pero acceder a uno ya creado y trabajar con él mediante código nos abre un mudo de posibilidades. Para ello, y en primer lugar, debemos aprender a acceder a esos documentos.


Realmente el procedimiento es muy sencillo con OOo Basic, al menos aparentemente. Por ejemplo:

Sub AbrirHojaCalculo

Dim sRuta As String
Dim mArg()
Dim oHoja As Object

sRuta = ConvertToUrl("C:\Users\XXXX\Desktop\DatosAlumnos.ods")
oHoja = StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mArg())

End Sub

Este script nos permite acceder a una hoja de cálculo  (DatosAlumnos.ods) ubicada en el escritorio (1) y el que sigue al documento NuevoCreado.odt

Sub AbrirDocumento

Dim sRuta As String
Dim mArg()
Dim oDocumento As Object

sRuta = ConvertToUrl("C:\Users\XXXX\Desktop\NuevoCreado.odt")oDocumento = StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mArg())

End Sub

Esta posibilidad que nos ofrece OOo Basic de acceder a documentos ya creados tiene potencialmente muchas posibilidades:

  • La creación de una especie de menú de acceso a diferentes documentos según necesidades 
  • El acceso a documentos que contienen informaciones o instrucciones concretas para el manejo del docap o la toma de decisiones (2)
  • El acceso a diferentes docap para la ejecución de un proceso complejo basado en varios soportes.
  • ...

Una vez que accedemos a un documento creado previamente, nos interesa poder trabajar con él, bien desde el documento origen, bien desde el propio documento. Lo primero es similar a lo que hicimos al crear un nuevo documento, según vimos en una [entrada anterior], pero ahora con todas las opciones que ofrece el documento abierto. Lo segundo (trabajar desde el documento al que accedemos) requiere que ese documento abierto sea también un docap.

En ambos casos nos interesa conocer algunas opciones que van más allá del mero acceso al documento. 

Por ejemplo, nos puede interesar acceder al documento en modo plantilla para salvaguardar el original. Para ello añadiremos al script de apertura lo siguiente:

Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"

mOpciones(0).Name = "AsTemplate"
mOpciones(0).Value = True

Estas instrucciones se ubican antes del código que facilita el acceso al documento y fuerzan a que éste se abra en formato plantilla, aunque originalmente no lo sea. Para ellos sustituiremos la matriz mArg() por la matriz objeto mOpciones(0), también en la instrucción que ordena la apertura del documento:

 StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mOpciones())

Una opción especialmente interesante cuando el archivo al que accedemos es un docap y queramos trabajar con él como tal, es acceder a su documento-base activando directamente sus macros. Para ello deberemos incluir las siguientes instrucciones al script de acceso (3):

Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"

mOpciones(0).Name = "MacroExecutionMode"
mOpciones(0).Value = 4

Estas instrucciones habilitan las macros que pudiera contener el documento abierto sin necesidad de que las activemos nosotros. Esto es posible por el valor 4 del parámetro Value.

El resultado final de las modificaciones que hemos ido viendo respecto al script inicial de apertura (por ejemplo) del archivo Writer es el siguiente:

Sub AbrirDocumento

Dim sRuta As String
Dim mOpciones(1) As New "com.sun.star.beans.PropertyValue"
Dim oDocumento As Object
mOpciones(0).Name = "AsTemplate"
mOpciones(0).Value = True
mOpciones(1).Name = "MacroExecutionMode"
mOpciones(1).Value = 4
sRuta = ConvertToUrl("C:\Users\XXXX\Desktop\NuevoCreado.odt")
oDocumento = StarDesktop.loadComponentFromURL(sRuta, "_blank", 0, mOpciones())

End Sub

Y aunque ahora no nos parezca relevante, no quiero dejar de plantear otra interesante posibilidad que nos permite este código de acceso a los documentos creados. Se trata de la posibilidad de acceder a una presentación y que esta se inicie de forma automática (4).

Sub AbrirPresenta()

    Dim sRuta As String
    Dim mOpciones(1) As New "com.sun.star.beans.PropertyValue"
    Dim oDoc As Object
mOpciones(0).Name = "StartPresentation"
mOpciones(0).Value = True
mOpciones(1).Name = "MacroExecutionMode"
mOpciones(1).Value = 4 

sRuta = ConvertToUrl( "C:\Users\XXXX\Desktop\presenta.odp" )
oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )

End Sub

Este script accede a una presentación (presenta.odp) soporte de un docap, activa sus macros y lo inicia de forma de forma automática.

NOTAS

(1) Por motivos de confidencialidad, sustituyo mi identificador de usuario por XXXX. Para que este script funcione realmente, cada cual deberá sustituir XXXX por su identificador. Además, obviamente, deberá existir una hoja de calculo Calc de nombre DatosAlumnos.ods en el escritorio. Cualquier otra ubicación es válida siempre que se referencie correctamente. Para conocer esa dirección es suficiente con hacer clic derecho sobre el archivo y acceder a Propiedades. Lo mismo sirve para el segundo script.

(2) Se trataría de acceder a un documento de cierta extensión y/o que se necesitara consultar con cierta frecuencia a lo largo de la ejecución del docap. En otro caso es suficiente con un MsgBox. Hay que tener en cuenta que igual que accedemos a un archivo Calc o Writer, también podemos acceder a un archivo txt o pdf. Es posible que estos archivos sean abiertos utilizando los servicios LibreOffice compatibles con sus extensiones. Esto va a depender de las extensiones que estén asociados a los servicios de LibreOffice.

(3) Aunque ahora no se exprese (sí en el script reformulado que veremos a continuación), en este ejemplo optamos por aplicar una doble condición: acceder al documento-base del docap como plantilla y activar sus macros. Para ello la matriz mOpciones() consta ahora de dos componentes, de ahí que varíe el numeral (mOpciones(0) -> mOpciones(1)

(4) Para el trabajo ordinario de los SEO esta posibilidad puede resultan de escasa utilidad, pero se me ocurren muchas circunstancias en las que puede ser muy interesante, como, por ejemplo, cuando creamos un recurso de evaluación que requiere contenido gráfico y/o multimedia. Para este formato una presentación es una excelente herramienta. Sobre presentaciones también es posible crear docap.

No hay comentarios:

Publicar un comentario

Comenta esta entrada