También vimos cómo vincular archivos de imagen a registros de una base de cualquier índole. Esta opción nos permite luego insertar esas imágenes en otros procesos Excel.
En esos casos utilizamos las instrucciones Hyperlink.Add y GetOpenFilename respectivamente.
Ahora vamos a ver cómo guardar nombre y dirección de documentos asociados a registros de una base. Utilizaremos nuevamente estas 2 instrucciones anteriores.
Además veremos otra macro para abrir esos archivos vinculados con un simple atajo de teclado. La instrucción utilizada será: FollowHyperlink.
Para ello partimos de una hoja base donde tendremos códigos e información de documentos y una columna para guardar el nombre del mismo (en pdf, doc o cualquier otro formato). Además guardaremos la ubicación de esos archivos en otra columna o en una celda auxiliar.
Utilizaré un Userform con controles para rellenar las columnas de datos, un botón para BUSCAR el archivo asociado y 2 botones de guardado, ya sea que guardemos la ubicación como hipervínculo (se llamará desde el mismo enlace) o la guardaremos separando nombre del archivo y su ruta. Luego tendremos una macro para llamar y abrir el documento elegido.
La macro del botón BUSCAR será la siguiente:
Private Sub CommandButton11_Click()
'BUSCAR
miDoc = Application.GetOpenFilename(Title:="Selecciona tu
archivo")
'si la variable está vacía significa
que cancelamos la ventana de diálogo
If miDoc = False Then
TextBox2 = ""
Else
TextBox2 = miDoc
End If
End Sub
Private Sub CommandButton1_Click()
'GUARDAR con hipervínculo
With Sheets("Hoja3")
x = .Range("A" &
Rows.Count).End(xlUp).Row + 1
.Range("A" & x)
= Application.WorksheetFunction.Max(.Range("A:A")) + 1
.Range("B" & x)
= TextBox1
.Range("C" & x)
= ComboBox2
.Range("D" & x)
= ComboBox1
.Range("E" & x)
= TextBox2
'hipervínculo en celda
col E
If TextBox2 <> "" Then _
.Hyperlinks.Add Anchor:=.Range("E" & x),
Address:=.Range("E" & x).Value, _
ScreenTip:="ver
doc", TextToDisplay:=.Range("E" & x).Value
End With
'limpia controles para un nuevo
registro
ComboBox1.ListIndex = -1:
ComboBox2.ListIndex = -1
TextBox1 = "": TextBox2 =
""
TextBox1.SetFocus
End Sub
Private Sub CommandButton2_Click()
'guardar solo nbre archivo
With Sheets("Hoja3")
x = .Range("A" &
Rows.Count).End(xlUp).Row + 1
.Range("A" & x)
= Application.WorksheetFunction.Max(.Range("A:A")) + 1
.Range("B" & x)
= TextBox1
.Range("C" & x)
= ComboBox2
.Range("D"
& x) = ComboBox1
'guardar nbre de archivo
.Range("E" & x) = Dir(TextBox2) 'solo nombre del archivo
'obtener la ruta
'.Range("F" & x) = Left(TextBox2, InStr(1, TextBox2,
Dir(TextBox2)) - 1)
End With
'limpia controles para un nuevo
registro
ComboBox1.ListIndex = -1:
ComboBox2.ListIndex = -1
TextBox1 = "": TextBox2 =
""
TextBox1.SetFocus
End Sub
En caso de haber guardado la ubicación del archivo relacionado como hipervínculo no necesitaremos ninguna macro para abrir ese documento. Con hacer clic sobre la celda de la col E será suficiente.En cambio si guardamos el nombre+ubicación podemos llamarlos desde la siguiente macro. Para mayor comodidad le asignamos un atajo de teclado.
La macro se ubica en un módulo y se ejecutará estando seleccionada alguna celda de la col B y que no esté vacía.
Sub abriendoArchivo()
'ATAJO DE TECLADO: CTRL f
'solo se ejecuta con celda
seleccionada en col B
If ActiveCell.Column <> 2 Or ActiveCell = "" Then Exit
Sub
'asignamos la ruta o carpeta donde se
encuentran los PDF.
'Optar por una de las 3 instrucciones
'ruta = ThisWorkbook.Path &
"\ESCANEADOS\" 'en subcarpeta
del libro activo
ruta = [F1] 'en celda auxiliar
F1
'ruta = ActiveCell.Offset(0, 4) 'en col F del registro
On Error Resume Next
ActiveWorkbook.FollowHyperlink ruta & ActiveCell.Offset(0, 3)
End Sub
'otra opción podría ser evaluar si col F está
vacía y en ese caso tomar la ruta indicada en F1.
'If ActiveCell.Offset(0, 4) = "" Then
'ruta = [F1]
'Else
' ruta = ActiveCell.Offset(0,
4)
'End If
Ver VIDEO 34.