Establecer o conocer la carpeta documentos del usuario con una macro

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.

No hay reacciones, todavía


Form is loading...

Otros usuarios vieron...

  • Seleccionar un rango de celdas e imprimirlas no es sencillo con Calc; necesitamos definir previamente un rango de impresión.

    Esta sencilla macro que describimos en este post realizará todo ese t…

  • ¿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 …

  • macros para comentarios en openoffice libreoffice calc

    Recientemente nos hemos encontrado con varias preguntas realizadas en el foro sobre cómo gestionar los comentarios en Calc mediante macros, y después de hacer un arduo trabajo de investigación, pr…

Patrocinado por SBS  Contacto • ©2021 by SalvaDCH

An unexpected error has occurred!

If this error persists, please report it to the administrator.

Volver a la página Home

Información adicional acerca de este error:

MySQL error!

Table 'evo_hitlog' is marked as crashed and should be repaired(Errno=1194)

Your query: Aggregate hits log

REPLACE INTO evo_hits__aggregate ( hagg_date, hagg_coll_ID, hagg_type, hagg_referer_type, hagg_agent_type, hagg_count )
SELECT DATE( hit_datetime ) AS hit_date, IFNULL( hit_coll_ID, 0 ), hit_type, hit_referer_type, hit_agent_type, COUNT( hit_ID )
  FROM evo_hitlog
 WHERE hit_datetime < '2021-04-17 00:00:00'
 GROUP BY hit_date, hit_coll_ID, hit_type, hit_referer_type, hit_agent_type