Ciao Andrea,
Ho creato un file Principale.xlsm ed un file Dati.xlsx nella directory
C:\Users\NDJ\Documents. Nelle celle C7:D10 del primo foglio del file
Principale.xlsm ho creato dei collegamenti al file Dati.xlsx:
Ho poi copiato il file in una cartella
Archivio su un Drive X:
Aprendo il file sul drive X,
senza abilitare le macro, vedo:

Cioè, i collegamnenti sono ora ad un file X:\Archivio\Dati.xlsx, il quale non esiste - insomma il problema sollevato da te!
Comunque, chiudendo il file Principale.xlsm e riaprendolo con le macro
abiiltate vedo invece:

Eureka !!!
Quindi, per approfondire il tuo problema, ti chiederei, temporeaneomente di sostituire il codice nel oggetto
ThisWorkbook con la seguente versione diagnostica:
'=========>>
Option Explicit
'--------->>
Private Sub Workbook_Open()
Dim vOld As Variant
Dim vNew As Variant
vOld = ThisWorkbook.LinkSources(xlExcelLinks)(1)
Call AggiornaLink
vNew = ThisWorkbook.LinkSources(xlExcelLinks)(1)
Debug.Print "vOld = sPercorsoCorretto "
Debug.Print vOld = sPercorsoCorretto
Debug.Print vbNewLine & "vNew = sPercorsoCorretto"
Debug.Print vNew = sPercorsoCorretto
Debug.Print vbNewLine & "vOld = vNew"
Debug.Print vOld = vNew
End Sub
'<<=========
Sostituisci anche il codice nel Modulo2 con la seguente versione:
'=========>>
Option Explicit
Public Const sPercorsoCorretto As String = _
"C:\Users\ndj\Documents\Dati.xlsx" '<<=== Modifica
'--------->>
Public Sub AggiornaLink()
Dim WB As Workbook
Dim vLinks As Variant, vLink As Variant
Dim sStr As String
' Const sPercorsoCorretto As String = _
"C:\Users\ndj\Documents\Dati.xlsx" '<<=== Modifica
Set WB = ThisWorkbook
With WB
vLinks = .LinkSources(xlExcelLinks)
If Not IsEmpty(vLinks) Then
.ChangeLink Name:=vLinks(1), _
NewName:=sPercorsoCorretto, _
Type:=xlExcelLinks
End If
End With
End Sub
'<<=========
Ora, dopo aver riprovato il procedimento:
Ctrl+G per accedere alla finestra Immediate e fammi sapere i tre messaggi che vedrai
===
Regards,
Norman
