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.