HTML Buttons auslesen und anklicken
Schritt-für-Schritt-Anleitung
Um HTML Buttons auf einer Webseite wie Yahoo Finance auszulesen und anzuklicken, kannst Du den folgenden VBA-Code verwenden. Dieser Code nutzt die Internet Explorer Automatisierung und greift auf die vorhandenen Buttons zu.
Sub Cookieabfrage()
'Variablen definieren
Dim IE As New InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLButtons As MSHTML.IHTMLElementCollection
Dim HTMLButton As MSHTML.IHTMLElement
' Internet Explorer aktivieren
IE.Visible = True
IE.navigate "https://de.finance.yahoo.com/quote/DAI.DE/history?ltr=1"
Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop
' Variablen setzen
Set HTMLDoc = IE.Document
Set HTMLButtons = HTMLDoc.getElementsByTagName("Button")
' Iteration
For Each HTMLButton In HTMLButtons
Debug.Print HTMLButton.ClassName, HTMLButton.TagName, HTMLButton.ID, HTMLButton.innerText
If HTMLButton.innerText = "OK" Then HTMLButton.Click
Next HTMLButton
End Sub
Mit diesem Code kannst Du die innerText-Eigenschaft nutzen, um den Button mit der Beschriftung "OK" zu finden und anzuklicken. Beachte, dass die ClassName-Eigenschaft regelmäßig geändert wird, weshalb die Verwendung von innerText sinnvoll ist.
Häufige Fehler und Lösungen
-
Button wird nicht gefunden
- Stelle sicher, dass Du die Webseite im Internet Explorer öffnest, da der Code speziell für diesen Browser geschrieben ist.
- Überprüfe, ob der Button im Pop-Up erscheint, sobald die Seite geladen wurde. Manchmal wird der Button durch Browsererweiterungen blockiert.
-
Fehlermeldung erscheint nicht
- Wenn keine Fehlermeldung ausgegeben wird, könnte es sein, dass Du den Button nicht richtig identifizierst. Verwende
Debug.Print
, um die Eigenschaften der Buttons zu überprüfen.
Alternative Methoden
Wenn Du nicht auf die innerText-Eigenschaft angewiesen sein möchtest, kannst Du auch die CSS-Klasse oder Attribute wie name
oder value
verwenden, um den Button zu identifizieren:
Set knotenStamm = browser.document.getElementsByClassName("btn primary")(0)
If Not knotenStamm Is Nothing Then
'Button klicken
knotenStamm.Click
End If
Diese Methode ist besonders nützlich, wenn Du mit mehrsprachigen Webseiten arbeitest, da die Struktur der Seite oft stabiler bleibt als die Inhalte.
Praktische Beispiele
Hier sind zwei Beispiele für das Anklicken von HTML Buttons:
-
Beispiel mit innerText
If HTMLButton.innerText = "OK" Then HTMLButton.Click
-
Beispiel mit Trim
If Trim(HTMLButton.innerText) = "OK" Then HTMLButton.Click
Diese Beispiele zeigen, wie Du auf den Button zugreifen und ihn anklicken kannst, indem Du verschiedene Ansätze zur Identifikation ausprobierst.
Tipps für Profis
- Late Binding verwenden: Verwende Late Binding, um sicherzustellen, dass Dein Code auch auf anderen Rechnern funktioniert, ohne dass zusätzliche Bibliotheken referenziert werden müssen.
- Fehlerbehandlung einfügen: Implementiere Fehlerbehandlung in Deinen Code, um unerwartete Probleme beim Zugriff auf HTML-Elemente zu vermeiden.
- Regelmäßige Überprüfung der ClassName: Wenn Du oft mit der gleichen Webseite arbeitest, überprüfe regelmäßig, ob sich die ClassName-Eigenschaften geändert haben.
FAQ: Häufige Fragen
1. Kann ich die Buttons auch in anderen Browsern ansteuern?
Ja, jedoch ist der hier gezeigte Code für Internet Explorer optimiert. Für andere Browser benötigst Du möglicherweise zusätzliche Tools oder Bibliotheken.
2. Was mache ich, wenn der Button nicht angeklickt wird?
Überprüfe die Debug-Ausgaben, um sicherzustellen, dass der Button existiert und die richtige innerText-Eigenschaft hat. Prüfe auch, ob Browsererweiterungen den Button blockieren.
3. Wie kann ich die Button-Klasse dynamisch anpassen?
Du kannst die innerText-Eigenschaft verwenden, um den Button zu identifizieren, da diese in der Regel stabiler bleibt als die ClassName-Eigenschaft.