Visual Basic for Applications:
Scaricare una pagina web
Come fare:
Per scaricare una pagina web in VBA, puoi utilizzare la libreria Microsoft XML, v6.0 (MSXML6), che consente richieste HTTP al server. Prima di addentrarti nel codice, assicurati di aver abilitato questo riferimento nel tuo editor VBA andando su Strumenti
-> Riferimenti
e selezionando Microsoft XML, v6.0
.
Ecco un semplice esempio di come scaricare il contenuto HTML di una pagina web:
Sub ScaricaPaginaWeb()
Dim request As Object
Dim url As String
Dim response As String
' Inizializza l'oggetto di richiesta XML HTTP
Set request = CreateObject("MSXML2.XMLHTTP")
url = "http://www.example.com"
' Apri una richiesta sincrona
request.Open "GET", url, False
' Invia la richiesta al server
request.send
' Ottieni il testo di risposta
response = request.responseText
' Stampa la risposta nella finestra immediata (a scopo di debug)
Debug.Print response
' Pulizia
Set request = Nothing
End Sub
Eseguendo questa subroutine verrà stampato l’HTML di http://www.example.com
nella Finestra Immediata nell’editor VBA. Nota che il parametro False
nel metodo Open
rende la richiesta sincrona, il che significa che il codice aspetterà fino al termine del download della pagina web prima di passare alla riga successiva.
Approfondimento
La tecnica mostrata si basa su MSXML, l’implementazione Microsoft dello standard XML HTTP Request, spesso utilizzato per le richieste AJAX nello sviluppo web. Questa componente fa parte da tempo della pila tecnologica di Microsoft, rendendola una scelta solida per le richieste di rete in VBA.
Tuttavia, la dipendenza da MSXML e VBA per scaricare e analizzare il contenuto web può essere limitante, in particolare con le moderne applicazioni web che utilizzano pesantemente JavaScript per il rendering di contenuti dinamici. Queste limitazioni possono rendere altri linguaggi o strumenti come Python con librerie come BeautifulSoup o Selenium più adatti per le attività di web scraping a causa della loro capacità di eseguire JavaScript e gestire interazioni complesse con i siti web.
Nonostante ciò, per compiti semplici che comportano il recupero di contenuto HTML diretto o quando si lavora all’interno delle applicazioni Office, VBA rimane uno strumento pratico. La sua integrazione all’interno della suite Office consente la manipolazione diretta dei documenti in base al contenuto web, offrendo un vantaggio unico per casi d’uso specifici.