Voy a suponer que los hipervínculos son de este tipo:
D:\Ejemplos\Web\Userform como pdf.xlsm
D:\Ejemplos\Web\xml excl 2.txt
Y que el nombre del archivo se conserva y todo lo demás de la ruta es lo que cambia. Entonces algo así te será útil:
Sub CambiarHipervinculo()
Dim Rango As Range
Dim Enlace As Hyperlink
Dim Ruta As String, Archivo As String, Carpeta As String
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Elige la nueva carpeta"
If .Show = -1 Then
Let Carpeta = .SelectedItems(1)
Else
Exit Sub
End If
End With
For Each Rango In ActiveDocument.StoryRanges
For Each Enlace In Rango.Hyperlinks
Let Ruta = Enlace.Address
Let Archivo = Mid$(Ruta, InStrRev(Ruta, "\") + 1)
Enlace.Address = Carpeta & "\" & Archivo
Enlace.TextToDisplay = Carpeta & "\" & Archivo
Next Enlace
Next Rango
End Sub
Comentas
Abraham Valencia