Establecer o conocer la carpeta documentos del usuario con una macro
¿Necesitas establecer o conocer la carpeta documentos del usuario con una macro en OpenOffice o LibreOffice?
Pues aquí encontrarás además como establecer o conocer la carpeta de archivos temporales, en la que se almacenan las plantillas, las imágenes, galería, copias de seguridad, etc.
Todas las rutas que utiliza la suite y que se pueden definir manualmente desde la opción Herramientas > Opciones > OpenOffice/LibreOffice > Rutas puedes conocerlas y modificarlas mediante estas macros en OoBasic.
Sub Main()
' Devuelve la carpeta definida para almacenar los documentos
MsgBox RutasDefinidas("Mis Documentos")
End Sub
Function RutasDefinidas( cRuta As String ) As String
Dim oPathSettings ' servicio PathSettings.
oPathSettings = CreateUNOService( "com.sun.star.util.PathSettings" )
Select Case cRuta
Case "Mis Documentos"
RutasDefinidas = oPathSettings.Work_writable
Case "Plantillas"
RutasDefinidas = oPathSettings.Template_writable
Case "Archivos temporales"
RutasDefinidas = oPathSettings.Temp_writable
Case "Copias de seguridad"
RutasDefinidas = oPathSettings.Backup_writable
Case "Galería"
RutasDefinidas = oPathSettings.Gallery_writable
Case "Imágenes"
RutasDefinidas = oPathSettings.Graphic_writable
Case "Autotexto"
RutasDefinidas = oPathSettings.AutoText_writable
Case "Autocorrección"
RutasDefinidas = oPathSettings.AutoCorrect_writable
Case "Perfil del usuario"
RutasDefinidas = oPathSettings.UserConfig_writable
RutasDefinidas = Replace(RutasDefinidas, "/user/config","/user")
Case Else
MsgBox "Nombre de ruta incorrecto", 176, "Función RutasDefinidas"
End Select
End Function
Sub RutasDefinidasEstablecer( cRuta As String, cPath As String )
Dim oPathSettings ' servicio PathSettings.
oPathSettings = CreateUNOService( "com.sun.star.util.PathSettings" )
cPath = ConvertToURL(cPath)
Select Case cRuta
Case "Mis Documentos"
oPathSettings.Work_writable = cPath
Case "Plantillas"
oPathSettings.Template_writable = cPath
Case "Archivos temporales"
oPathSettings.Temp_writable = cPath
Case "Copias de seguridad"
oPathSettings.Backup_writable = cPath
Case "Galería"
oPathSettings.Gallery_writable = cPath
Case "Imágenes"
oPathSettings.Graphic_writable = cPath
Case "Autotexto"
oPathSettings.AutoText_writable = cPath
Case "Autocorrección"
oPathSettings.AutoCorrect_writable = cPath
Case Else
MsgBox "Nombre de ruta incorrecto", 176, "Sub RutasDefinidasEstablecer"
End Select
End Sub
La función RutasDefinidas nos devuelve, indicando el nombre de la ruta (que es el mismo que se muestra en el panel de configuración) la carpeta en donde se almacenan los documentos del usuario, o los temporales.
Hemos agregado la posibilidad de solicitar la ruta de acceso a la carpeta del perfil del usuario, que para muchos desarrolladores de macros pueda ser interesante conocer.
Si deseamos modificar esas carpetas desde código, podemos hacerlo con la subrutina RutasDefinidasEstablecer, que con los argumentos nombre de la ruta y ruta completa hasta la carpeta nos permite hacerlo fácilmente.
Obtener la ruta de otras carpetas del sistema, como la carpeta Escritorio
Hay que destacar que estos valores pueden ser modificados por el usuario, por lo que no es seguro utilizarlos para obtener otras rutas, como por ejemplo, la carpeta escritorio.
Por este mismo motivo tampoco podemos esperar que coincida con la carpeta documentos del usuario del sistema operativo.
Si el usuario no lo ha modificado, por defecto coincidirá con esa carpeta, y a partir de ese nombre podremos obtener otras (como por ejemplo la carpeta Escritorio), dependiendo, claro está, del sistema operativo en que se ejecuta la suite, pues por defecto no se encuentran en las mismas rutas en Windows, Linux o MacOs.
Si queremos evitar el problema de que el usuario haya modificado esta definición, podemos utilizar como base la ruta a la carpeta del perfil del usuario, y a partir de esta, obtener otras carpetas del sistema.
Hay que tener en cuenta que las carpetas del sistema Escritorio, Favoritos, Mis imágenes, Mis vídeos, etc. también pueden ser personalizadas dependiendo del sistema operativo (por ejemplo, desde Windows Vista en adelante se pueden modificar fácilmente las rutas de estas carpetas), por lo que este método tampoco es infalible.