Wendy ha un singolo foglio di lavoro Excel che contiene oltre 1.200 collegamenti ipertestuali a file TIFF. (Questi sono collegamenti ipertestuali, non collegamenti regolari.) Excel ha singhiozzato e ha dovuto chiudersi, quindi Emily ha utilizzato i file salvati automaticamente per recuperare il file salvato in precedenza. Ora tutti i collegamenti ipertestuali precedentemente funzionanti non funzionano. Aveva i collegamenti ipertestuali alle immagini su un’unità di rete condivisa, ma il salvataggio automatico ha modificato i collegamenti ipertestuali per fare riferimento all’unità C :. Si chiede se esiste un modo semplice per ripristinarli sull’unità di rete condivisa.

A prima vista potrebbe sembrare che sia possibile utilizzare la normale funzione Trova e sostituisci di Excel per trovare la designazione del disco rigido (come in file: // c 🙂 e sostituirla con un’unità di rete (come in file: // shareddrive). Il problema è che questo approccio risolve solo una parte del problema: cambia solo la parte visualizzata del collegamento ipertestuale, non il collegamento ipertestuale sottostante stesso. L’unico modo per accedere al collegamento ipertestuale stesso è tramite l’uso di una macro.

Supponendo che tutti i collegamenti ipertestuali che devono essere modificati siano sullo stesso foglio di lavoro, è possibile utilizzare la seguente macro:

Sub FixHyperlinks1()

Dim wks As Worksheet     Dim hl As Hyperlink     Dim sOld As String     Dim sNew As String

Set wks = ActiveSheet     sOld = "c:\"      sNew = "S:\Network\"

For Each hl In wks.Hyperlinks         hl.Address = Replace(hl.Address, sOld, sNew)

Next hl End Sub

Tutto quello che devi fare è modificare i valori assegnati alle variabili sOld e sNew. Se si riceve un errore quando si tenta di eseguire la macro, un errore con la riga contenente la funzione Sostituisci, è perché la funzione Sostituisci non è disponibile in tutte le versioni di Excel. In tal caso dovresti invece usare la seguente macro:

Sub FixHyperlinks2()

Dim wks As Worksheet     Dim hl As Hyperlink     Dim sOld As String     Dim sNew As String

Set wks = ActiveSheet     sOld = "c:\"      sNew = "S:\Network\"

For Each hl In wks.Hyperlinks         hl.Address = Application.WorksheetFunction. _             Substitute(hl.Address, sOld, sNew)

Next hl End Sub

Notare che l’unica differenza è l’uso della funzione Sostituisci foglio di lavoro.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (8622) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: