AW: Ansprechen Website VBA
08.10.2019 15:15:01
Zwenn
Hallo Lukas,
die Buttons werden erst zur Laufzeit über ein JavaScript in die Seite einegbunden. Sie stehen dann aber über die HTML-Struktur zur Verfügung. Du findest solche Strukturen, wenn Du im Browser F12 drückst und im unten erscheinenden Fenster durch die Baumstruktur der geladenen Seite klickst.
Den Year-Button kannst Du folgendermaßen anklicken:
Den Zeilenumbruch in der Zeile Set knotenButtons = ... hat die Forensoftware verursacht. Den musst Du rausnehmen. Der CSS-Klassenname muss dann so dastehen:
"mv-button-group mv-stack-block mv-hyperlink-group"
Sub ButtonKlicken()
Dim browser As Object
Dim url As String
Dim knotenButtons As Object
Dim knotenButtonYear As Object
url = "https://www.eex.com/en/market-data/power/futures/phelix-at-futures#!/"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
browser.navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Buttongruppe "Month, Quarter, Year" holen
'Man könnte auch direkt den Button für "Year" holen, statt die Gruppe mit allen 3 Buttons
'Der aktive Button hat jedoch immer eine andere CSS-Klasse, als die beiden inaktiven
'Wird ein inaktiver angeklickt, wechseln die CSS-Klassennamen der beiden Buttons im
'HTML-Quelltext
'HTML-Quelltext der Buttongruppe bei Aufruf der Seite
'<div class="mv-button-group mv-stack-block mv-hyperlink-group">
' <div class="mv-button-base mv-hyperlink-button mv-item-selected">Month</div>
' <div class="mv-button-base mv-hyperlink-button">Quarter</div>
' <div class="mv-button-base mv-hyperlink-button">Year</div>
'</div>
'HTML-Quelltext der Buttongruppe nach Anklicken von "Year"
'<div class="mv-button-group mv-stack-block mv-hyperlink-group">
' <div class="mv-button-base mv-hyperlink-button">Month</div>
' <div class="mv-button-base mv-hyperlink-button">Quarter</div>
' <div class="mv-button-base mv-hyperlink-button mv-item-selected">Year</div>
'</div>
'Zunächst wird die Gruppe der 3 Buttons als Einzel-Element geholt
'Bei Bedarf können so alle drei Buttons über den Index der div-Tags angesprochen werden
Set knotenButtons = browser.document.getElementsByClassName("mv-button-group mv-stack-block _
mv-hyperlink-group")(0)
'Prüfen, ob die Buttongruppe geholt wurde
If Not knotenButtons Is Nothing Then
'Hier könnte man jeden Button zum Ansprechen verfügbar machen
'Es wird an dieser Stelle nur "Year" genommen
'Im HTML-Quelltext besteht unser "knotenButtons" aus 3 div-Tags
'Das sind die 3 Buttons in der angegebenen Reihenfolge
'Da eine Node-Collection mit dem Index 0 beginnt, hat der
'Button "Year" den Index 2
Set knotenButtonYear = knotenButtons.getElementsByTagName("div")(2)
'Den Button "Year" anklicken und warten, bis die Tabelle neu aufgebaut wurde
knotenButtonYear.Click
Do Until browser.ReadyState = 4: DoEvents: Loop
End If
End Sub
Viele Grüße,
Zwenn