viernes, 1 de septiembre de 2023

OOo Basic. Archivos.

 Rutas a directorios y archivos

Aunque el trabajo cotidiano y directo con los servicios de LibreOffice resuelve el manejo de rutas y la creación de archivos y directorios de forma integrada con las utilidades básicas del sistema operativo, haciendo que parezca simple lo que es en realidad complejo; pero también nos podemos encontrar con la necesidad de gestionar el uso de rutas y el acceso a directorios y archivos desde OOo Basic.

 

LibreOffice hereda de OpenOffice la cualidad de ser multiplataforma, por lo que hace uso de rutas de archivo y directorios en formato URL.

file:///home/usuario/Directorio/archivo.ods

En este formato se usan los caracteres 0-9, a-z y A-Z, siendo convertidos el resto a una codificación establecida. Por ejemplo, el espacio en blanco se convierte en %20. Es conveniente, por tanto, utilizar siempre caracteres aceptados por el formato URL.

Además OOo Basic posee dos funciones muy útiles para trabajar con formato URL:

  • ConvertToUrl()
  • ConvertFromUrl()
La primera (ConvertToUrl) convierte una ruta al formato URL y la segunda (ConvertFromUrl) devuelve la ruta al formato local. Veamos en un pseudoscript (basado en uno de Mauricio Baeza) para ejemplificar su uso:

Sub UsoRuta

Dim sRuta As String

sRuta = "/home/yomismo/MiArchivo.ods"  -> establezco la ruta local (Windows)

MsgBox sRuta -> y la muestro

sRuta = ConvertToUrl("/home/yomismo/MiArchivo.ods") -> Convierto a formato URL

MsgBox sRuta  -> Y la muestro en este formato 

sRuta = ConvertFromUrl( sRuta ) -> Regreso al formato local originario

MsgBox sRuta -> Y compruebo que efectivamente es así

End Sub

Fíjate en la diferencia entre el uso de una y otra función, ya que son inversas y complementarias, tanto en su sintaxis como en su funcionamiento. 

Siempre que vayamos a trabajar con rutas para acceder a archivos o guardarlos en directorios es conveniente utilizar la función ConvertToUrl() para evitar errores en el acceso. En este contexto, ConvertFromUrl() te puede servir para comprobar que todo funciona según tienes previsto.