VBA Webseite auslesen

VBA ist in der Microsoft Office-Welt ein sehr nützlicher Helfer, um alltägliche wiederkehrende Abläufe zu automatisieren. Ein solcher Ablauf kann sein, dass man aus einer bestimmten Webseite Informationen auslesen muss, und zum Beispiel nach Excel, Word oder in eine andere Datei zu übertragen. Das geht natürlich auch im Copy&Paste (Kopieren und Einfügen). Viel besser wäre es aber, wenn man mit einem Klick den Quellcode einer Webseite auslesen könnte, um diesen dann weiterzuverarbeiten.

HTML-Code aus Webseite auslesen

Das folgende Bild zeigt als Beispiel eine Excel-Tabelle, in der eine Internetadresse/URL in der ersten Zelle gespeichert ist. Außerdem wurde der Excel-Tabelle eine Schaltfläche „Webseite auslesen“ hinzugefügt. Dies erledigt man über das Menü „Entwicklertools“ ➥ „Einfügen“.

Hier soll nun bei Klick auf den Button die Internetseite/URL, die in der ersten Zelle eingetragen ist, zur weiteren Verwendung ausgelesen werden.

Screenshot VBA Editor mit Code zum Auslesen einer Webseite
VBA-Code zum Auslesen einer Webseite (Es wird der Quellcode/HTML-Code ausgelesen)

Mit Rechtsklick auf den Button und Auswahl „Makro zuweisen…“, weist man dann dem Button die VBA-Funktion zu, die ausgeführt werden sollen. In diesem Fall heißt die Funktion „BtnReadWebsite_Click“.

Screenshot Excel Makro zuweisen
Rechtsklick Makro zuweisen

In dem sich dann öffnenden Dialog, kann man die Sub-Methode auswählen, die den HTML-Code der Webseite ausliest.

Screenshot Excel Makro zuweisen zum Auslesen des Quelltexts einer Webseite
Makro zuweisen zum Auslesen des Quelltexts einer Webseite

VBA-Code URL auslesen

Um nun den Inhalt einer Webseite auszulesen verwendet man im VBA-Editor den folgenden VBA-Code:

Sub BtnReadWebsite_Click()
    Dim url As String
    url = Cells(1, 1).Value
    URL_Load url
End Sub


Private Sub URL_Load(ByVal sURL As String)
    Dim appInternetExplorer As Object
    Dim htmlTxt As String
    Set appInternetExplorer = CreateObject("InternetExplorer.Application")
    appInternetExplorer.navigate sURL
    Do: Loop Until appInternetExplorer.Busy = False
    Do: Loop Until appInternetExplorer.Busy = False
    htmlTxt = appInternetExplorer.document.DocumentElement.outerHTML
    Debug.Print htmlTxt
    Set appInternetExplorer = Nothing
    Close
    'Mache hier irgendwas mit dem Text: Parsen, ausgeben, speichern
    MsgBox "Der Text wurde ausgelesen!"
End Sub

In der ersten Sub-Routine wird die Internetadresse aus der Excelzelle ausgelesen und and die Funktion URL_Load übergeben.

Die Funktion URL_Load erzeugt dann eine InternetExplorer-Instanz, welche das Laden der Internetseite übernimmt. Die „Loop“-Funktionen dienen dazu die Zeit zu überbrücken, die für das Laden der Webseite benötigt wird.

Über appInternetExplorer.document.DocumentElement.outerHTML erfolgt dann die Zuweisung des ausgelesenen HTML-Codes.

Nun kann man mit der String-Variable „htmlText“, den Text weiter verarbeiten. In dem Beispiel hier wird der Text über Debug.Print im Direktfenster des VBA-Editors ausgegeben. Man kann den Text aber auch der Zwischenablage hinzufügen oder in eine konkrete Excel-Zelle einfügen.

In den meisten Fällen wird es notwendig sein, dass man den Quellcode der Internetseite weiterverarbeitet (parsed), da man nur eine ganz bestimmte Information von der Webseite benötigt.

Bestseller Nr. 1
Bestseller Nr. 2

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.