String aus Webseite mit VBA auslesen
Schritt-für-Schritt-Anleitung
-
Öffne den VBA-Editor in Excel. Drücke ALT + F11.
-
Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Option Explicit
Function GetHTTPResult(sURL As String) As String
Dim XMLHTTP As Object
Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
XMLHTTP.Open "GET", sURL, False
XMLHTTP.Send
GetHTTPResult = XMLHTTP.ResponseText
Set XMLHTTP = Nothing
End Function
Sub GetTextAusSite()
Dim sURL As String, sResult As String
Dim von As Long, bis As Long
sURL = "https://wiki.selfhtml.org/"
sResult = GetHTTPResult(sURL)
von = InStr(1, sResult, "Vollständiges")
If von > 0 Then
bis = InStr(von, sResult, "<")
MsgBox Mid(sResult, von, bis - von)
Else
MsgBox "String nicht gefunden."
End If
End Sub
-
Ändere die URL in der GetTextAusSite-Sub, um die Webseite zu verwenden, die Du auslesen möchtest.
-
Führe das Makro aus: Klicke auf Run oder drücke F5, um den Text auszulesen.
Häufige Fehler und Lösungen
-
Fehler: "Der Servername oder die Serveradresse konnte nicht verarbeitet werden."
- Lösung: Überprüfe die URL auf Schreibfehler und stelle sicher, dass die Webseite erreichbar ist.
-
Fehler: "Das Objekt kann nicht gefunden werden."
- Lösung: Achte darauf, dass Du die richtige Version von MSXML installiert hast. Du kannst auch
MSXML2.ServerXMLHTTP anstelle von MSXML2.XMLHTTP verwenden.
-
Fehler: Der gesuchte String wird nicht gefunden.
- Lösung: Stelle sicher, dass der String korrekt in
InStr eingegeben wurde und überprüfe den HTML-Code der Webseite.
Alternative Methoden
Eine weitere Möglichkeit, Daten von einer Webseite auszulesen, ist die Verwendung von WinHttp.WinHttpRequest. Hier ist ein Beispiel:
Sub GetTextMitWinHttp()
Dim http As Object
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
http.Open "GET", "https://wiki.selfhtml.org/", False
http.Send
MsgBox http.ResponseText
End Sub
Praktische Beispiele
Hier ist ein einfaches Beispiel, um den Text "Vollständiges Inhaltsverzeichnis" von einer Webseite auszulesen:
Sub Beispiel()
Dim sResult As String
sResult = GetHTTPResult("https://wiki.selfhtml.org/")
If InStr(sResult, "Vollständiges") > 0 Then
MsgBox "Text gefunden!"
Else
MsgBox "Text nicht gefunden."
End If
End Sub
Tipps für Profis
- Nutze
.responsetext, um den gesamten HTML-Inhalt der Webseite zu erhalten.
- Verwende
Regular Expressions in VBA, um komplexe Muster im HTML-Code zu finden.
- Berücksichtige, dass einige Webseiten mit JavaScript Inhalte dynamisch laden. In solchen Fällen kann das einfache Auslesen des HTML-Codes nicht ausreichen.
FAQ: Häufige Fragen
1. Kann ich auch Daten von Seiten auslesen, die mit JavaScript erstellt wurden?
Das Auslesen von JavaScript-generierten Inhalten ist schwierig. In der Regel wird nur der statische HTML-Code zurückgegeben. Für komplexere Webseiten könnte es notwendig sein, auf Web-Scraping-Tools oder APIs zurückzugreifen.
2. Funktioniert dieser Code in jeder Excel-Version?
Der vorgestellte Code sollte in Excel 2007 und höher funktionieren. Bei älteren Versionen kann es zu Komplikationen kommen, insbesondere bei der Verwendung von MSXML.
3. Gibt es eine Möglichkeit, die Abfrage zu automatisieren?
Ja, Du kannst das Makro so einstellen, dass es regelmäßig ausgeführt wird, indem Du es in ein Workbook_Open-Ereignis oder einen Timer einfügst.