Macro para modificar los vínculos de una hoja excel
Es fácil cambiar los vínculos de excel a través de Edición/Vínculos. Pero si se quiere realizar una macro para activar esta ventana desde excel la cosa se complica.
Seguro que hay una manera más sencilla de desarrollarlo pero adjunto la mía. Partimos de una hoja excel donde hay un vínculo a un fichero, este vínculo se debe poder modificar, para cargar los datos actualizados deseados.
Para ello el planteamiento es: conseguir la ruta del vínculo actual y pedir en nuevo vínculo.
El problema es recuperar la ruta inicial del vínculo. Adjunto código:
Sub LoadQcost()
'
Dim thisbook As Workbook
Dim nombreinicial As String
Dim nombreactual As String
Set thisbook = ActiveWorkbook
' ************CARGA NOMBRE INICIAL*************************************
'carga la ruta de una celda, pero me gustaría cargarlo directamente de la celda que contiene el vínculo.
nombreinicial = thisbook.Sheets("Indicator").Cells(2, 3).Value
' ************CARGA NOMBRE ACTUAL*************************************
nombreactual = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), " _
& "*.xls", Title:="Seleccionar Weekly/Q-Cost")
If nombreactual = "Falso" Then
nombreactual = thisbook.Sheets("Indicator").Cells(2, 3).Value
End If
' *************INTERCAMBIO DE VINCULOS********************************
ActiveWorkbook.ChangeLink name:=nombreinicial, newname:=nombreactual, Type:=xlExcelLinks
ActiveWorkbook.UpdateLink name:=nombreactual
ActiveWorkbook.Sheets("Indicator").Cells(2, 3).Value = nombreactual
thisbook.Sheets("Indicator").Cells(2, 3).Value = nombreactual
End Sub
Gracias por indicar como puede recuperar la ruta de la celda que contiene el hipervínculo y insertar esta información en el código actual.
Seguro que hay una manera más sencilla de desarrollarlo pero adjunto la mía. Partimos de una hoja excel donde hay un vínculo a un fichero, este vínculo se debe poder modificar, para cargar los datos actualizados deseados.
Para ello el planteamiento es: conseguir la ruta del vínculo actual y pedir en nuevo vínculo.
El problema es recuperar la ruta inicial del vínculo. Adjunto código:
Sub LoadQcost()
'
Dim thisbook As Workbook
Dim nombreinicial As String
Dim nombreactual As String
Set thisbook = ActiveWorkbook
' ************CARGA NOMBRE INICIAL*************************************
'carga la ruta de una celda, pero me gustaría cargarlo directamente de la celda que contiene el vínculo.
nombreinicial = thisbook.Sheets("Indicator").Cells(2, 3).Value
' ************CARGA NOMBRE ACTUAL*************************************
nombreactual = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), " _
& "*.xls", Title:="Seleccionar Weekly/Q-Cost")
If nombreactual = "Falso" Then
nombreactual = thisbook.Sheets("Indicator").Cells(2, 3).Value
End If
' *************INTERCAMBIO DE VINCULOS********************************
ActiveWorkbook.ChangeLink name:=nombreinicial, newname:=nombreactual, Type:=xlExcelLinks
ActiveWorkbook.UpdateLink name:=nombreactual
ActiveWorkbook.Sheets("Indicator").Cells(2, 3).Value = nombreactual
thisbook.Sheets("Indicator").Cells(2, 3).Value = nombreactual
End Sub
Gracias por indicar como puede recuperar la ruta de la celda que contiene el hipervínculo y insertar esta información en el código actual.
1 Respuesta
Respuesta de Juan Carlos González Chavarría