Scraping, Import oder DatenAnalyse
Wenn du HTML-Inhalte aus einer Datei oder Datenbank per VBA verarbeiten möchtest – z. B. von lokal gespeicherten Webseiten oder API-Antworten – brauchst du keinen Browser oder WebRequest. Mit dem htmlfile-Objekt aus der Microsoft HTML Object Library (MSHTML) kannst du Seiten direkt aus einem String parsen und mit den bekannten DOM-Methoden durchlaufen.
Im folgenden Beitrag zeige ich dir, wie du Schritt fĂŒr Schritt HTML zerlegst und Informationen extrahierst – ganz ohne Webbrowser-Steuerung oder externe Bibliotheken.
đŠ 1. Vorbereitung – HTML laden mit htmlfile
Dim doc As Object
Set doc = CreateObject("htmlfile")
Dim html As String
html = "<html><body><h1>Beispiel</h1><p class='info'>Test</p><span databranche='branche'>Musterbranche</span></body></html>"
doc.body.innerHTML = html
Nun kannst du mit doc.getElementsByTagName, getElementById, getElementsByClassName (ĂŒber Umwege) oder querySelector arbeiten.
đ§© 2. Zugriff auf bestimmte Tags
Dim h1Text As String
h1Text = doc.getElementsByTagName("h1")(0).innerText
Debug.Print "Ăberschrift: " & h1Text
đŻ 3. Zugriff ĂŒber className (z. B. <p class="info">)
Dim pElem As Object
For Each pElem In doc.getElementsByTagName("p")
If pElem.className = "info" Then
Debug.Print "Info-Text: " & pElem.innerText
End If
Next
Tipp:
getAttribute("class")funktioniert in MSHTML oft nicht zuverlĂ€ssig – besser mit.classNamearbeiten!
đ§· 4. Zugriff ĂŒber Attribute
Dim spanElem As Object
For Each spanElem In doc.getElementsByTagName("span")
If spanElem.getAttribute("databranche") = "branche" Then
Debug.Print "Branche: " & spanElem.innerText
End If
Next
đŻ 5. CSS-Selektoren mit querySelector
Du kannst auch gezielt ein bestimmtes Element auswÀhlen:
Dim elem As Object
Set elem = doc.querySelector("div.mod-head__sel span")
If Not elem Is Nothing Then Debug.Print elem.innerText
querySelectorAllist in MSHTML nicht verfĂŒgbar – fĂŒr mehrere Treffer bitte weitergetElementsByTagName+ Schleife nutzen.
đ 6. Links und Telefonnummern extrahieren
Dim aElem As Object
For Each aElem In doc.getElementsByTagName("a")
If Left(aElem.getAttribute("href"), 4) = "tel:" Then
Debug.Print "Telefonnummer: " & aElem.innerText
ElseIf InStr(aElem.innerText, "Webseite") > 0 Then
Debug.Print "Webseite: " & aElem.getAttribute("href")
End If
Next
â Fazit
Mit htmlfile und etwas DOM-Wissen kannst du auch ohne Browser oder Internetzugriff HTML-Daten komfortabel verarbeiten – ideal fĂŒr Scraping aus lokal gespeicherten Dateien, Zwischenspeichern von Webdaten oder API-Antworten im HTML-Format.
Wenn du mehr willst: Im nĂ€chsten Teil zeige ich, wie du ganze Tabellen oder Listen aus HTML in Excel oder Access importierst – inklusive verschachtelter Strukturen.
đĄ Bonus-Tipp
Wenn du auf Nummer sicher gehen willst, aktiviere in deinem VBA-Editor unter Extras > Verweise die „Microsoft HTML Object Library“ – das gibt dir IntelliSense fĂŒr HTMLDocument, IHTMLElementCollection, getAttribute, innerText usw.
đ Du willst HTML professionell auswerten oder fĂŒr die Weiterverarbeitung in Access/Excel aufbereiten? Dann schreib mir – ich helfe dir gern weiter.