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.
Private Sub CommandButton11_Click()
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 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
Acceso al VIDEO 34.
No hay comentarios.:
Publicar un comentario