Cuando tenemos en un libro Excel vínculos hacia otras hojas u otras referencias de fila/columna, nos encontramos con el problema de que al moverlos siguen conectados al origen.
Así, por ejemplo, si tenemos una hoja como en la siguiente imagen, donde cada vínculo nos lleva a un cuadro dentro de la Hoja1, al copiar esa hoja y asignarle otro nombre el vínculo siempre nos dirige a la hoja de origen, o sea a la Hoja1.
Para resolver esta situación, utilizaremos una macro de pocas instrucciones, donde vamos a cambiar el argumento SubAddress, o sea la dirección del vínculo.
Y además, en este ejemplo, modificaremos otros 2 argumentos:
. ScreenTip (el texto que se muestra al pasar el mousse por encima del vínculo) y
. TextToDisplay (el texto o valor que se muestra en la celda).
En un módulo copiaremos esta macro:
Sub ModificarHipervinculos()
'modificar los hipervínculos dirigiéndolos a otra hoja
Dim anterior As String, nuevo As String, nvaDire As
String, cadena As String
Dim x As Integer, y As Integer
Application.ScreenUpdating = False
'nombres de hojas
anterior = "Hoja1": nuevo = ActiveSheet.Name
'limpia col auxiliar
Range("O:O").Clear
'recorre la col A que tiene los hipervínculos a modificar
y = Range("A" & Rows.Count).End(xlUp).Row
For x = 4 To y
'coloca en col auxiliar el hipervínculo
Range("O" & x) = Range("A" & x).Hyperlinks(1).SubAddress
'reemplaza el texto anterior por el nuevo
Range("O" & x).Replace What:=anterior, Replacement:=nuevo
'vuelve a crear el hipervínculo en la col donde se encontraba
Range("A" & x).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _
SubAddress:=nvaDire, _
ScreenTip:=cadena, _
TextToDisplay:=ActiveCell.Text
Next x
MsgBox "Fin del proceso."
End Sub
Luego se podrá ejecutar desde el menú Programador/Desarrollador estando en la hoja activa, es decir, donde se encuentra la lista de vínculos que deseamos actualizar.
NOTA: podemos incluir el valor de las variables directamente en la instrucción del Hyperlink, quedándonos así:
ActiveSheet.Hyperlinks.Add Anchor:=Selection,
Address:="", _
SubAddress:=Range("O" & x), _
ScreenTip:=ActiveSheet.Name & "-" &
Range("A" & x), _
TextToDisplay:=ActiveCell.Text
El libro de ejemplo se puede descargar desde este enlace o solicitarlo al correo: cibersoft_arg@gmail.com
Acceso al VIDEO Nº 72 con el paso a paso desde aquí.