Visual Basic for Applications:
Analiza Składniowa HTML
Jak to zrobić:
W VBA można przetwarzać HTML za pomocą Microsoft HTML Object Library
. Dodaj odniesienie do tej biblioteki w swoim edytorze VBA, przechodząc do Narzędzia > Referencje i zaznaczając Microsoft HTML Object Library
. Daje to dostęp do klas do nawigowania i manipulowania dokumentami HTML.
Oto prosty przykład, który pokazuje, jak załadować dokument HTML z pliku i wyodrębnić wszystkie linki (tagi kotwiczne):
Sub ParseHTML()
Dim htmlDoc As MSHTML.HTMLDocument
Dim htmlElement As MSHTML.IHTMLElement
Dim htmlElements As MSHTML.IHTMLElementCollection
Dim htmlFile As String
Dim zawartoscPliku As String
' Wczytanie zawartości HTML z pliku
htmlFile = "C:\ścieżka\do\twego\pliku.html"
Open htmlFile For Input As #1
zawartoscPliku = Input$(LOF(1), 1)
Close #1
' Inicjalizacja dokumentu HTML
Set htmlDoc = New MSHTML.HTMLDocument
htmlDoc.body.innerHTML = zawartoscPliku
' Pobieranie wszystkich tagów kotwicznych
Set htmlElements = htmlDoc.getElementsByTagName("a")
' Iteracja przez wszystkie elementy kotwiczne i drukowanie atrybutu href
For Each htmlElement In htmlElements
Debug.Print htmlElement.getAttribute("href")
Next htmlElement
End Sub
Ten skrypt odczytuje zawartość pliku HTML, ładuje ją do obiektu HTMLDocument
, pobiera wszystkie elementy kotwiczne (<a>
tagi), a następnie iteruje po nich, drukując atrybut href
każdego z nich do Okna natychmiastowego.
W głębi:
Historycznie, przetwarzanie HTML w VBA było nieco kłopotliwe z powodu braku bezpośredniego wsparcia dla nowoczesnych technologii skrobania stron internetowych i obsługi dokumentów. Biblioteka Microsoft HTML Object Library, mimo że potężna, jest nieco przestarzała i może nie radzić sobie równie płynnie z nowoczesnymi standardami internetowymi, jak nowsze technologie.
Dla złożonych zadań związanych z przetwarzaniem HTML i skrobania stron internetowych, zalecane są często alternatywne narzędzia i języki takie jak Python z bibliotekami takimi jak Beautiful Soup czy Scrapy. Te nowoczesne narzędzia oferują większą elastyczność, lepszą wydajność i są bardziej zgodne z aktualnymi standardami internetowymi. Jednak podczas pracy w ekosystemie Microsoft Office, używanie VBA z Microsoft HTML Object Library pozostaje cenną umiejętnością. Umożliwia bezpośrednią manipulację zawartością HTML w sposób, który integruje się bezproblemowo z aplikacjami takimi jak Excel i Access, zapewniając prosty sposób na realizację zadań związanych z podstawową obsługą dokumentów HTML bez konieczności wychodzenia poza znajome środowisko VBA.