Ci si potrebbe trovare nella situazione in cui è necessario estrarre la URL da una casella con un hyperlink, dove è visibile solo il “titolo” chiamato tecnicamente pretty text, e non la URL completa:
Una possibilità è, ovviamente, farlo manualmente…
- Fare Click con tasto destro sull’ hyperlink.
- Dal Menu Contestuale, scegliere Modifica Hyperlink (Edit Hyperlink). Excel mostrerà la finestra di dialogo Modifica Hyperlink.
- Seleziona e copia (Ctrl+C) la URL dal campo Indirizzo della finestra di dialogo.
- Premi Esc per chiudere la finestra di dialogo Modifica Hyperlink.
- Incolla (Ctrl+V) il valore nella cella desiderata.
Ma cosa fare nel caso si abbia una lunga lista di hyperlink? Questa procedura diventerebbe noiosissima! Quindi dobbiamo trovare un modo di automatizzarla. Possiamo provare ad estrarre tutte le URL con una Macro.
Quel che segue potrebbe essere utile nell’estrazione di hyperlink da tabelle di link che sono state copiate in Excel, o nella elaborazione di web query, o per estrarre gli indirizzi email da una lista di hyperlink “mailto:”.
Estrarre una URL da un hyperlink in Excel è facile!
Opzione 1: Se si vuol eseguire tutto in una sola volta
- Entra in VBA (Premi Alt+F11)
- Inserisci un nuovo Modulo (Inserisci > Modulo)
- Copia e incolla la funzione qui sotto
- Premi F5 e fai click su “Esegui”
- Esci da VBA (Press Alt+Q)
- Ta-da! Fatto! Troverai alla destra dell’Hyperlink, la URL completa per ogni valore trovato nella tabella!
Sub ExtractHL()
Dim HL As Hyperlink
For Each HL In ActiveSheet.Hyperlinks
HL.Range.Offset(0, 1).Value = HL.Address
Next
End Sub
Opzione 2: Se prevedi di aggiungere altri hyperlink al foglio e devi salvare la formula nel foglio Excel
- Entra in VBA (Premi Alt+F11)
- Inserisci un nuovo Modulo (Inserisci > Modulo)
- Copia e incolla la funzione qui sotto
- Premi F5 e fai click su “Esegui”
- Esci da VBA (Press Alt+Q)
- Usa questa sintassi per questa funzione personalizzata: =GetURL(cell,[default_value])
Function GetURL(cell As range, _
Optional default_value As Variant)
'Lists the Hyperlink Address for a Given Cell
'If cell does not contain a hyperlink, return default_value
If (cell.range("A1").Hyperlinks.Count <> 1) Then
GetURL = default_value
Else
GetURL = cell.range("A1").Hyperlinks(1).Address & "#" & cell.range("A1").Hyperlinks(1).SubAddress
End If
End Function