Web-Formular ausfüllen/Abfrage
10.02.2020 17:41:29
Michael
Ich möchte eine Abfrage/Ausfüllen des Formulars auf folgender Seite durchführen:
https://misc.firstdata.eu/CurrencyCalculator/fremdwaehrungskurse/calendar
Ich nutze dazu folgendes Script von Zwenn:
Sub KreditKartenWechselKurseHolen()
Dim browser As Object
Dim url As String
Dim knotenInput As Object
Dim knotenDropdown As Object
Dim knotenKalender As Object
Dim knotenEven As Object
Dim knotenOdd As Object
Dim knotenAlleZellen As Object
Dim knotenEineZelle As Object
Dim htmlZeile As Long
Dim zeile As Long
Dim startZeile As Long
Dim spalte As Long
Dim startSpalte As Long
Dim spalteWaehrung As Long
Dim datum As String
Dim al As Object
'Datumsabfrage aus Tabelle
If ActiveSheet.Range("C1").Value >= Date Then
datum = Date - 1
Cells(1, 3).Value = datum
End If
datum = CStr(Day(Cells(1, 3).Value))
'Start der Ausgabe in der Excel Tabelle
zeile = 2
spalte = 3
startZeile = zeile
startSpalte = spalte
spalteWaehrung = 2
url = "https://misc.firstdata.eu/CurrencyCalculator/fremdwaehrungskurse/calendar"
'Alle Währungen durchgehen
For zeile = startZeile To ActiveSheet.Cells(Rows.Count, spalteWaehrung).End(xlUp).Row
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = False
browser.Navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Pauschal beide Haken in Checkboxen für Kreditkarten setzen
'Das sind die input-Tags mit den Indizes 2 und 3 in der NodeCollection
Set knotenInput = browser.document.getElementsByTagName("input")
knotenInput(2).Checked = True
knotenInput(3).Checked = True
'Währung in Dropdown wählen
'Habe das auf Antons Methode über Value geswitcht
'Man kann auch ein Array als LookUp Table mit allen Währungskürzeln der Seite anlegen,
'und darüber erst prüfen, ob es die in der Excel Tabelle eingetragene Währung überhaupt _
gibt
Set knotenDropdown = browser.document.getelementbyid("Waehrung")
knotenDropdown.Value = ActiveSheet.Cells(zeile, spalteWaehrung).Value
'Aktuellsten Tag im angezeigten Kalendermonat setzen
'Allen auswählbaren Tagen sind Links hinterlegt
'Erster Link = der 1. des Monats
'Letzter Link = aktuell verfügbarstes Datum
'Set knotenKalender = browser.document.getelementsbyclassname("m1 calbody")(0). _
getElementsByTagName("a")
'knotenKalender(knotenKalender.Length - 1).Click
'mit selbst gewähltem Datum
Set knotenKalender = browser.document.getelementbyid("cal1Container")
For Each al In knotenKalender.all
If al.innertext = datum Then
al.Click
Exit For
End If
Next
'Submit Button anklicken
'Ist das input-Tag mit dem index 4
knotenInput(4).Click
'Manuelle Pause, damit die Ergebnisseite komplett geladen wird
Application.Wait (Now + TimeSerial(0, 0, 3))
'Inhalt der Ergebnistabelle in der Tabelle ausgeben aus der das Makro gestartet wurde
'Die Werte stehen in als gerade und ungerade gekennzeichneten Zeilen
'Für dieses Makro werden die ungeraden nicht benötigt, da immer nur 1 Datum pro Währung _
bearbeitet wird
Set knotenEven = browser.document.getelementsbyclassname("even")
'Set knotenOdd = browser.document.getElementsByClassName("odd")
'Alle Zeilen der HTML Tabelle ausgeben
For htmlZeile = 0 To knotenEven.Length - 1
Set knotenAlleZellen = knotenEven(htmlZeile).getElementsByTagName("td")
For Each knotenEineZelle In knotenAlleZellen
Cells(zeile, spalte).Value = Trim(knotenEineZelle.innertext)
spalte = spalte + 1
Next knotenEineZelle
'zeile = zeile + 1
spalte = startSpalte
Next htmlZeile
'IE schließen
browser.Quit
Next zeile
End Sub
Das funktioniert auch ganz gut. Leider werden so aber nur die Tage das aktuellen Monats gewertet.
Zwenn schrieb in dem damaligen Beitrag: Man kann auch durch die Monate navigieren,
Das bekomme ich aber nicht hin. Besser wäre sogar noch, wenn ich gleich ein Datum aus einer Zelle als Datum der Abfrage setzen könnte.
Danke für Eure Hilfe.
Anzeige