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.

1 Respuesta

Respuesta
nombreactual = nombreinicial
Empecemos por aquí.
Añado más explicaciones:
nombreincial es la ruta del vínculo que tiene el archivo excel inicialmente al abrirlo. P.e. C:\a.xls.
nombreactual es el nueva ruta que quiero cargar en los vínculos. P.e. C:\b.xls.
En mi hoja excel (prueba.xls) tengo la casilla A1 un vínculo al archivo a.xls y lo quiero cambiar al b.xls.
La celda muestra un valor a través de la fómula:       =[A.xls]Hoja1!$A$1
El tema está en que quiero extraer c:\a.xls para redireccionar el vínculo nuevamente.
Muchas gracias por la velocidad de respuesta anterior. Espero que estas notas ayuden a aclarar mi duda.
Saludos cordiales,
¿Y por qué no declaras una variable en donde le asignes el valor de por celda?
Perdona, no tengo el VBA muy por mano. ¿Cómo podría hacerlo?. Gracias
Ese código no se si lo copiaste o qué, pero si me sales con que lo programaste, entonces deberías saber la forma de declarar variables. Si lo copiaste de otro lado, en realidad no tengo tiempo para darte clases.
La verdad es que he invertido mucho tiempo y muchas consultas para desarrollar ese código, aunque seguro que un experto lo haría rápidamente.
Gracias por sus notas, ya seguiré buscando sobre el tema. Saludos.
Lo que no entiendo es que si guardo el valor de la celda en una variable me guarda el "valor" no la ruta del vínculo, que es lo que realmente necesito.
Pero lo dicho, gracias, y seguiré buscando.
Sin promesas me puedes enviar tu correo para analizar mejor tu código.
[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas