Come modificare un gran numero di collegamenti ipertestuali

Cristina ha un foglio di lavoro con molti, molti collegamenti ipertestuali diversi al suo interno. Si sta chiedendo se esiste un modo per sostituire solo una parte di ciascun collegamento. Ad esempio, potrebbe voler modificare qualsiasi istanza di “https://www.miosito.com/” in “c:/documents/miacopia/”. Se c’è qualcosa di ulteriore nei collegamenti, quella parte dovrebbe rimanere. Quindi, ad esempio, se il collegamento originale è “https://www.miosito.com/questapagina.html”, vorrebbe venisse modificata in “c:/documents/miacopia/questapagina.html”.

Allo stesso modo, a volte capita che Excel si chiuda improvvisamente e che tu debba utilizzare i file salvati automaticamente per recuperare il file salvato in precedenza. Ora tutti i collegamenti ipertestuali a file presenti sul tuo sistema precedentemente funzionanti potrebbero non funzionare più. Solitamente capita nel caso in cui i file risiedano su un’unità di rete condivisa. Il salvataggio automatico potrebbe modificare i collegamenti ipertestuali per fare riferimento all’unità “C:”.

A prima vista potrebbe sembrare che sia possibile utilizzare la normale funzione Trova e sostituisci di Excel per trovare la vecchia destinazione del collegamento ipertestuale e sostituirla con la nuova. Il problema è che questo approccio risolve solo una parte del problema: modifica solo la parte visualizzata del collegamento ipertestuale, non il collegamento ipertestuale sottostante. L’unico modo per accedere al collegamento ipertestuale è tramite l’uso di una macro.

Supponendo che tutti i collegamenti ipertestuali da modificare si trovino sullo stesso foglio di lavoro, è possibile utilizzare la seguente macro:

 

Sub EditHyperlinks()
    Dim lnkH As Hyperlink
    Dim sOld As String
    Dim sNew As String
    sOld = "https://www.miosito.com"  'oppure "c:\"
    sNew = "c:/documents/miacopia/"   'oppure "S:\Network\"
    For Each lnkH In ActiveSheet.Hyperlinks
        lnkH.Address = Replace(lnkH.Address, sOld, sNew)
        lnkH.TextToDisplay = Replace(lnkH.TextToDisplay, sOld, sNew)
    Next
End Sub

 

 

Questa routine scorre tutti i collegamenti ipertestuali nel foglio di lavoro corrente e apporta modifiche, se necessario, a ciascuno di essi. Sia il collegamento ipertestuale che il testo visualizzato vengono modificati, a seconda dei casi. Tutto quello che devi fare è modificare le stringhe sOld e sNew per specificare cosa stai cercando e con cosa vuoi sostituirlo.

 

 

Tags: , , , , ,

Ti è stato utile?