Access - hipervinculos relativos

 
Vista:

hipervinculos relativos

Publicado por R. Alvarez (1 intervención) el 20/10/2006 15:32:21
Quisiera saber con VBA la posibilidad de localizar un archivo de las unidades de red y que el path que pueda almacenar en un campo de hipervinculo sea el relativo, osea \"...\\srv9789\\documentos1\\fic.txt\" y no \"Z:\\documentos\\fic.txt\".

La parte de abrir el dialogo para buscar ya la tengo pero siempre me da la ruta absoluta.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Localizar archivo de unidad de red y almacenar ruta relativa en campo de hipervínculo mediante VBA

Publicado por Alejandro (4142 intervenciones) el 27/07/2023 16:25:02
Para lograr que el path almacenado en un campo de hipervínculo sea relativo en lugar de absoluto, puedes utilizar una combinación de funciones de VBA para manipular la ruta seleccionada por el usuario. A continuación, se presenta una solución paso a paso para obtener la ruta relativa del archivo:

Paso 1: Crear un cuadro de texto para mostrar la ruta relativa
- Abre el formulario o informe donde deseas tener el campo de hipervínculo relativo.
- Asegúrate de tener un cuadro de texto (por ejemplo, "txtRutaRelativa") para mostrar la ruta relativa del archivo seleccionado.

Paso 2: Agregar el código VBA para obtener la ruta relativa
1. Abre el editor de código VBA haciendo clic en "Visual Basic" en la pestaña "Desarrollador" o presionando ALT + F11.
2. En el editor de código, crea una función para convertir una ruta absoluta en una ruta relativa:

1
2
3
4
5
6
7
Function ObtenerRutaRelativa(archivoAbsoluto As String) As String
    Dim carpetaBase As String
    carpetaBase = "\\srv9789\documentos1\" ' Establece aquí la carpeta base de la unidad de red
    Dim carpetaArchivo As String
    carpetaArchivo = Left(archivoAbsoluto, InStrRev(archivoAbsoluto, "\")) ' Obtiene la carpeta del archivo absoluto
    ObtenerRutaRelativa = Replace(carpetaArchivo, carpetaBase, "...\\srv9789\documentos1\")
End Function

3. Asegúrate de cambiar la variable "carpetaBase" para que coincida con la ubicación de la carpeta raíz de la unidad de red en tu entorno.

Paso 3: Utilizar la función en el evento del cuadro de diálogo de búsqueda
1. Suponiendo que ya tienes el código para abrir el cuadro de diálogo y obtener la ruta absoluta (por ejemplo, utilizando el objeto "FileDialog"), utiliza la función "ObtenerRutaRelativa" para obtener la ruta relativa y mostrarla en el cuadro de texto "txtRutaRelativa":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub btnBuscar_Click()
    Dim dlg As FileDialog
    Set dlg = Application.FileDialog(msoFileDialogFilePicker)
 
    ' Configura el cuadro de diálogo y muestra el cuadro de búsqueda
    ' ...
 
    If dlg.Show = -1 Then ' El usuario hizo clic en "Abrir"
        Dim archivoSeleccionado As String
        archivoSeleccionado = dlg.SelectedItems(1)
 
        ' Obtiene la ruta relativa y muestra en el cuadro de texto
        Me.txtRutaRelativa.Value = ObtenerRutaRelativa(archivoSeleccionado)
    End If
End Sub

Paso 4: Guarda y cierra el editor de código VBA.

Con esta solución, cuando el usuario seleccione un archivo de la unidad de red mediante el cuadro de diálogo, la ruta absoluta será convertida en una ruta relativa utilizando la función "ObtenerRutaRelativa", y se mostrará en el cuadro de texto "txtRutaRelativa".

Recuerda que debes adaptar la variable "carpetaBase" en la función "ObtenerRutaRelativa" según la ubicación de la carpeta raíz de la unidad de red en tu caso específico.

Espero que esta solución te sea útil para obtener rutas relativas en lugar de absolutas para los archivos seleccionados en tu formulario o informe de Access. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar