Come specificare il testo predefinito da mostrare per i collegamenti ipertestuali

Giorgio inserisce spesso collegamenti ipertestuali nei suoi fogli di lavoro. Questi collegamenti ipertestuali sono a file di vario tipo che risiedono sul suo sistema informatico. Quando inserisce i collegamenti ipertestuali, il testo del collegamento ipertestuale predefinito inserito da Excel è il percorso completo e il nome del file. Giorgio vorrebbe che il testo del collegamento ipertestuale, per impostazione predefinita, fosse costituito solo dal nome del file, senza il percorso completo.

Esiste un modo molto semplice per ottenere il risultato desiderato: sposta semplicemente la cartella di lavoro nella stessa cartella con i file ai quali desideri collegarti. Quando si utilizza la finestra di dialogo Inserisci collegamento ipertestuale, per il collegamento verrà utilizzato il nome file, senza il percorso.

Se ciò non è fattibile, l’utilizzo della finestra di dialogo Inserisci collegamento ipertestuale si traduce in un percorso completo che finisce sia nel campo Indirizzo che nel campo Testo da visualizzare della finestra di dialogo. Non esiste alcun modo per modificare questo comportamento predefinito; puoi modificare solo il valore predefinito proposto da Excel. Ciò significa che è possibile, su ogni singolo collegamento ipertestuale, modificare il campo Testo da visualizzare nella finestra di dialogo Inserisci collegamento ipertestuale in modo che mostri solo il nome del file, come desideri.

Naturalmente, ciò comporta molte modifiche, da qui la necessità di Giorgio. Ci sono un paio di modi per aggirare questo problema. Il primo è non fare affidamento sulla finestra di dialogo Inserisci collegamento ipertestuale. Costruisci invece una formula che inserisce il collegamento ipertestuale utilizzando la funzione COLLEG.IPERTESTUALE. Diciamo, ad esempio, che hai, nella cella C2, il nome di percorso per la cartella contenente i tuoi file:

C:\Users\Simone\Documents\

 

Inoltre, potresti avere un elenco di nomi di file nell’intervallo D2:D75, come questo:

MiaCartella.xlsx
MioDocumento.docx
MioPDF.pdf

 

Potresti inserire una formula come questa nella cella E2:

=COLLEG.IPERTESTUALE($C$2 & D2;D2)

 

Copia la formula nell’intervallo E3:E75 e avrai i collegamenti ipertestuali che desideri.

Se nel foglio di calcolo sono già inseriti numerosi collegamenti (ad esempio, nella colonna A), potresti utilizzare una formula un po’ più complessa per estrarre e visualizzare solo il nome del file:

=COLLEG.IPERTESTUALE(A1;SOSTITUISCI(A1;SINISTRA(A1;TROVA(CODICE.CARATT(1);SOSTITUISCI(A1;"\";
CODICE.CARATT(1);LUNGHEZZA(A1)-LUNGHEZZA(SOSTITUISCI(A1;"\";"")))));""))

 

Potresti quindi nascondere la colonna contenente i collegamenti ipertestuali con il percorso completo, in modo da visualizzare solo le versioni abbreviate che desideri.

Se disponi di molti collegamenti ipertestuali su cui vuoi intervenire, potresti utilizzare una macro per rimuovere il percorso da tutti i collegamenti ipertestuali esistenti. Eccone un esempio:

 

Sub AggiustaTestoCollegamenti1()
    Dim h As Hyperlink
    Dim sRaw As String
    Dim iPos As Integer
    For Each h In ActiveSheet.Hyperlinks
        sRaw = h.TextToDisplay
        iPos = InStr(1, sRaw, "\")
        While (iPos > 0)
            sRaw = Mid(sRaw, iPos + 1, Len(sRaw))
            iPos = InStr(1, sRaw, "\")
        Wend
        If sRaw <> h.TextToDisplay Then
            h.TextToDisplay = sRaw
        End If
    Next h
End Sub

 

 

L’unica cosa che la macro modifica è il testo visualizzato per ciascun collegamento ipertestuale e cancella tutto quello che si trova prima della barra rovesciata finale. La macro non influenzerà tutto ciò che potrebbe apparire come risultato di una funzione COLLEG.IPERTESTUALE.

Questa macro può essere molto semplificata. Innanzitutto il ciclo While… Wend è obsoleto e mantenuto solo per compatibilità con le versioni precedenti.
E’ ora consigliato utilizzare l’istruzione Do… Loop che fornisce un modo più strutturato e flessibile per eseguire un loop.

Ma soprattutto non ce n’è affatto bisogno qui. La macro cerca l’ultima istanza della barra rovesciata ma VBA fornisce una funzione che fa esattamente questo in un’unica operazione: InStrRev.

Eccone una versione molto più efficiente e concisa:

 

Sub AggiustaTestoCollegamenti2()
    Dim h As Hyperlink
    For Each h In ActiveSheet.Hyperlinks
        h.TextToDisplay = Mid(h.TextToDisplay, InStrRev(h.TextToDisplay, "\") + 1)
    Next h
End Sub

 

 

Tags: , , , , , , , , , , , , ,

Ti è stato utile?