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 .className arbeiten!

đŸ§· 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

querySelectorAll ist in MSHTML nicht verfĂŒgbar – fĂŒr mehrere Treffer bitte weiter getElementsByTagName + 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.

Tags:

No responses yet

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert