Steve ha un intervallo di celle (A1: A10) che contengono indirizzi di siti web, ad esempio www.example.com. Si chiede se sia possibile, all’interno di una macro, aprire tutti questi indirizzi in un browser contemporaneamente in schede separate del browser.

Ci sono un paio di modi in cui puoi affrontare questa attività e quale scegli dipende in gran parte dalla natura dei dati nel tuo foglio di lavoro. Se le celle contengono collegamenti ipertestuali attivi (quelli che se fai clic su di essi, l’indirizzo viene aperto in un browser), puoi utilizzare una macro piuttosto semplice:

Sub FollowHyperlinks1()

Dim MyRange As Range     Dim hl As Hyperlink

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each hl In MyRange.Hyperlinks         hl.Follow     Next hl End Sub

La macro esamina semplicemente tutti i collegamenti ipertestuali nell’intervallo A1: A10 e utilizza il metodo Segui per aprire ciascuno di essi nel browser predefinito.

A causa del modo in cui il sistema operativo trasferisce le informazioni da Excel al browser, è una buona idea che il browser sia aperto prima di eseguire la macro. La ragione di ciò è perché, durante i test, abbiamo scoperto che potresti effettivamente ritrovarti con due istanze del browser aperte, con alcuni indirizzi aperti in un’istanza e alcuni nell’altra.

Apparentemente ciò si verifica a causa del ritardo nell’apertura della prima istanza del browser. Se il browser è aperto prima dell’esecuzione della macro, non ci sono ritardi e ogni indirizzo si apre in una scheda diversa della stessa istanza del browser.

Se gli indirizzi nel foglio di lavoro potrebbero non essere collegamenti ipertestuali attivi, non puoi fare affidamento sull’utilizzo della raccolta di collegamenti ipertestuali per l’intervallo.

Invece, devi guardare il valore di ogni cella nell’intervallo:

Sub FollowHyperlinks2()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         ThisWorkbook.FollowHyperlink _           Address:=sTemp     Next cell End Sub

Questo approccio utilizza il metodo FollowHyperlink per caricare l’indirizzo nella variabile sTemp. In questo caso, non importa se i contenuti delle celle sono collegamenti ipertestuali attivi o meno; il codice tenta ancora di aprirli in un browser.

Infine, se i tuoi dati potrebbero non contenere indirizzi completamente qualificati, dovrai comunque utilizzare un approccio diverso. Ad esempio, Steve ha menzionato di avere indirizzi come www.example.com nel foglio di lavoro, ma finora tale indirizzo non funzionerà con gli esempi. Se nei tuoi dati manca http: // all’inizio (o qualche variante, come https: //), il codice non aprirà l’indirizzo nel browser. Nei tuoi dati ha questa particolarità, quindi una leggera modifica alla macro è d’obbligo:

Sub FollowHyperlinks3()

Dim MyRange As Range     Dim cell As Range     Dim sTemp As String

On Error Resume Next     Set MyRange = Range("A1:A10")

For Each cell In MyRange         sTemp = cell.Value         If InStr(sTemp, "://") = 0 Then             sTemp = "http://" & sTemp         End If         ThisWorkbook.FollowHyperlink _           Address:=sTemp     Next cell End Sub

Notare che questo esempio esamina il contenuto di sTemp per vedere se contiene i caratteri “: //”. In caso contrario, il prefisso http: // viene aggiunto al contenuto della cella ed Excel tenta di utilizzare il metodo FollowHyperlink per aprire l’indirizzo modificato.

_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 (11413) si applica a Microsoft Excel 97, 2000, 2002 e 2003.

Puoi trovare una versione di questo suggerimento per l’interfaccia a barra multifunzione di Excel (Excel 2007 e versioni successive) qui: