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.
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”.
In dem sich dann öffnenden Dialog, kann man die Sub-Methode auswählen, die den HTML-Code der Webseite ausliest.
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.