Puede parecer una pregunta extraña.. pero tiene su sentido.
En ocasiones construimos unos vínculos o enlaces a otros archivos (para facilitar su apertura), empleando la función HIPERVINCULO (ver ejemplo), pero dejando la ubicación del archivo vinculado fija... posteriormente en el tiempo, estas ubicaciones de los archivos cambian y nuestra función HIPERVINCULO pierde su sentido y falla (error tipo: No se puede abrir el archivo especificado).
La solución será construir una sencilla macro que evalúe si la ruta empleada como argumento en la función HIPERVINCULO existe o no.
Veamoslo con un ejemplo, donde tenemos tres funciones con tres ubicaciones (dos existen y una tercera no):
El código que insertaremos en un módulo del Explorador de proyectos del Editor de VBA:
Lo importante de este código es la función de VBA DIR que nos retorna un valor tipo String que representa el nombre de un archivo, directorio o carpeta que coincide con el patrón o atributo de archivo especificado, o la etiqueta de volumen de una unidad de disco; según los parámetros:
Si la función DIR devuelve algún valor entonces implica que la ruta existe... de manera sencilla y práctica.
Si ejecutamos el procedimiento vemos los siguientes mensajes. Una ruta existente:
Y una ruta no existente o fallida:
En ocasiones construimos unos vínculos o enlaces a otros archivos (para facilitar su apertura), empleando la función HIPERVINCULO (ver ejemplo), pero dejando la ubicación del archivo vinculado fija... posteriormente en el tiempo, estas ubicaciones de los archivos cambian y nuestra función HIPERVINCULO pierde su sentido y falla (error tipo: No se puede abrir el archivo especificado).
La solución será construir una sencilla macro que evalúe si la ruta empleada como argumento en la función HIPERVINCULO existe o no.
Veamoslo con un ejemplo, donde tenemos tres funciones con tres ubicaciones (dos existen y una tercera no):
El código que insertaremos en un módulo del Explorador de proyectos del Editor de VBA:
Sub VerificarHipervinculo() Dim ruta As String, ruta3 As String 'recorremos el rango de celdas con las funciones HIPERVINCULO For Each celda In Range("C3:C5") 'con estas variables extraemos la ruta del argumento ruta = Replace(celda.Formula, "=", "") pos1 = InStr(1, ruta, "(") + 2 pos2 = InStr(1, ruta, ",") - 1 ruta = Mid(ruta, pos1, pos2 - pos1) 'con la función DIR verificamos si existe o no dicha ruta If Dir(ruta, vbArchive) <> "" Then MsgBox ruta & " existe" Else MsgBox ruta & " no existe" End If Next celda End Sub
Lo importante de este código es la función de VBA DIR que nos retorna un valor tipo String que representa el nombre de un archivo, directorio o carpeta que coincide con el patrón o atributo de archivo especificado, o la etiqueta de volumen de una unidad de disco; según los parámetros:
Constante Valor Descripción vbNormal 0 Normal vbReadOnly 1 De sólo lectura vbHidden 2 Oculto vbSystem 4 Archivo de sistema vbVolume 8 Etiqueta de volumen vbDirectory 16 Directorio o carpeta vbArchive 32 El archivo ha cambiado desde la última copia de seguridad
Si la función DIR devuelve algún valor entonces implica que la ruta existe... de manera sencilla y práctica.
Si ejecutamos el procedimiento vemos los siguientes mensajes. Una ruta existente:
Y una ruta no existente o fallida:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.