Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ansprechen Website VBA

Ansprechen Website VBA
08.10.2019 10:11:42
Lukas
Hallo liebe Forumsmitglieder,
ich bräuchte bei folgendem Problem eure Hilfe:
Ich müsste per VBA eine Website aufrufen und dort Daten auslesen. Allerdings gibt es auf der Website
den Button "Year" den ich vor dem auslesen anklicken müsste.
Ich bin mir leider nicht sicher wie ich das mittels VBA lösen kann, vor allem da ich etwas überfordert mit dem Auslesen der Button-ID bin.
Userbild
Das ist der Button den ich ansprechen will.
Danke schonmal für eure Hilfe!
Beste Grüße,
Lukas

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige