Visual Basic for Applications:
Analisi del HTML
Come fare:
In VBA, è possibile eseguire il parsing di HTML usando la Microsoft HTML Object Library
. Aggiungi un riferimento a questa libreria nel tuo editor VBA andando in Strumenti > Riferimenti e selezionando Microsoft HTML Object Library
. Questo ti dà accesso alle classi per navigare e manipolare i documenti HTML.
Ecco un esempio semplice che mostra come caricare un documento HTML da un file ed estrarre tutti i link (tag di ancoraggio):
Sub ParseHTML()
Dim htmlDoc As MSHTML.HTMLDocument
Dim htmlElement As MSHTML.IHTMLElement
Dim htmlElements As MSHTML.IHTMLElementCollection
Dim htmlFile As String
Dim fileContent As String
' Carica il contenuto HTML da un file
htmlFile = "C:\percorso\al\tuo\file.html"
Open htmlFile For Input As #1
fileContent = Input$(LOF(1), 1)
Close #1
' Inizializza il Documento HTML
Set htmlDoc = New MSHTML.HTMLDocument
htmlDoc.body.innerHTML = fileContent
' Ottieni tutti i tag di ancoraggio
Set htmlElements = htmlDoc.getElementsByTagName("a")
' Cicla attraverso tutti gli elementi di ancoraggio e stampa l'attributo href
For Each htmlElement In htmlElements
Debug.Print htmlElement.getAttribute("href")
Next htmlElement
End Sub
Questo script legge il contenuto di un file HTML, lo carica in un oggetto HTMLDocument
, recupera tutti gli elementi di ancoraggio (<a>
tag), e poi itera su di essi, stampando l’attributo href
di ciascuno nella Finestra Immediata.
Approfondimento:
Storicamente, il parsing di HTML in VBA è stato un po’ macchinoso a causa della mancanza di supporto diretto per le moderne tecnologie di web scraping e di gestione dei documenti. La Microsoft HTML Object Library, nonostante sia potente, è in qualche modo datata e potrebbe non gestire gli standard web moderni con la stessa fluidità delle tecnologie più recenti.
Per compiti complessi di parsing HTML e web scraping, sono spesso consigliati strumenti e linguaggi alternativi come Python con librerie come Beautiful Soup o Scrapy. Questi strumenti moderni offrono maggiore flessibilità, migliori prestazioni e sono più in linea con gli standard web attuali. Tuttavia, quando si lavora all’interno dell’ecosistema di Microsoft Office, l’utilizzo di VBA con la Microsoft HTML Object Library rimane una competenza preziosa. Esso sblocca la manipolazione diretta dei contenuti HTML in un modo che si integra perfettamente con applicazioni come Excel e Access, fornendo un metodo diretto per svolgere compiti che coinvolgono la gestione di documenti HTML di base senza la necessità di uscire dall’ambiente VBA familiare.