Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
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

Datenabfrage über Internet Explorer: 424 Fehler

Datenabfrage über Internet Explorer: 424 Fehler
21.07.2017 14:51:32
Marco
Hallo,
für die Abfrage von Daten aus dem Internet verwende ich eine Lösung, die mir im Thread "URL Download von generierter Datei" bereits zur Verfügung gestellt wurde. Sie funktioniert einwandfrei. Nun will ich von der selben Seite (https://www.regelleistung.net/ext/data/) weitere Daten (z.B.: IGCC -> Austausch_Deutschland) herunterziehen mit selbiger Methode, ich müsste einzig die Werte für getelementsbyid ändern. Das Problem: Wenn die Kategorie "IGCC" gewählt wird, wird das Sub-Auswahlmenü nicht angepasst, wodurch die Fehlermeldung '424-Object erforderlich' auftritt. Ich habe zusätzliche Stopps eingebaut, um der Seite genügend Zeit zum Laden zu geben, half aber leider nicht.
Sub IGCCquant()
Dim wbAE As String
Dim wkshAE As String
wbAE = ActiveWorkbook.Name
wkshAE = ActiveSheet.Name
'Tabelle erstellen
Dim ie As Object, daten As Object, zeile As Object, zelle As Object, Startdate As Date
Dim lZeile As Long, lSpalte As Long, anzahlTage As Integer, i As Integer
lZeile = 1: lSpalte = 1
Startdate = CDate(myDate) 'Startdatum
anzahlTage = 1 'Anzahl der Tage anpassen
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "https://www.regelleistung.net/ext/data/"
While ie.Busy
DoEvents
Wend
Do: Loop Until ie.document.readyState = "complete"
ie.document.getElementById("form-tso").Value = "11" 'IGCC
Do: Loop Until ie.document.readyState = "complete" 'zusätzlicher Stopp
Application.Wait Now + TimeSerial(0, 0, 2) 'zusätzlicher Stopp
ie.document.getElementById("form-type").Value = "IN_DE_VERMIEDENE_SRL" 'Austausch Deutschland
For i = 0 To anzahlTage - 1
ie.document.getElementById("form-from-date").Value = CStr(CDate(Startdate + i))
ie.document.getElementById("submit-button").Click
Do: Loop Until ie.document.readyState = "complete"
Set daten = ie.document.getElementById("data-table")
lZeile = 1
For Each zeile In daten.Rows
For Each zelle In zeile.Cells
If lSpalte = 4 Or lSpalte = 5 Then
Workbooks(wbAE).Worksheets(wkshAE).Cells(lZeile + 5, lSpalte + 10) = Format(zelle.  _
_
innerText, "0000")
End If
lSpalte = lSpalte + 1
Next
lSpalte = 1
lZeile = lZeile + 1
Next
Next
ie.Quit
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
versuche es mal mit der initEvent method
21.07.2017 16:35:40
Tino
Hallo,
versuch mal so.
Dim evt As Object
Set evt = ie.document.createEvent("HTMLEvents")
evt.initEvent "change", True, False
With ie.document.getElementById("form-tso")
.Value = 11 'IGCC
.dispatchEvent evt
End With
'...

Siehe auch
https://msdn.microsoft.com/de-de/library/ff975459(v=vs.85).aspx
Gruß Tino
AW: versuche es mal mit der initEvent method
24.07.2017 16:09:12
Marco
Hallo Tino,
hat leider nicht geklappt. Zur Sicherstellung, so sieht der Code mit deinem Änderungsvorschlag _ aus:

Sub IGCCquant()
Dim wbAE As String
Dim wkshAE As String
Dim evt As Object
'wbDir = ActiveWorkbook.Path
wbAE = ActiveWorkbook.Name
wkshAE = ActiveSheet.Name
'Tabelle namens "RZ_SALDO" erstellen
Dim ie As Object, daten As Object, zeile As Object, zelle As Object, Startdate As Date
Dim lZeile As Long, lSpalte As Long, anzahlTage As Integer, i As Integer
lZeile = 1: lSpalte = 1
'Beispiel vom 3.06.2017 bis 5.06.2017
Startdate = CDate(myDate) 'Startdatum anpassen
anzahlTage = 1 'Anzahl der Tage anpassen
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "https://www.regelleistung.net/ext/data/"
While ie.Busy
DoEvents
Wend
Do: Loop Until ie.document.readyState = "complete"
Set evt = ie.document.createEvent("HTMLEvents")
evt.initEvent "change", True, False
With ie.document.getElementById("form-tso")
.Value = 11 'IGCC
.dispatchEvent evt
End With
ie.document.getElementById("form-type").Value = "IN_DE_VERMIEDENE_SRL" 'Austausch Deutschland
For i = 0 To anzahlTage - 1
ie.document.getElementById("form-from-date").Value = CStr(CDate(Startdate + i))
ie.document.getElementById("submit-button").Click
Do: Loop Until ie.document.readyState = "complete"
Set daten = ie.document.getElementById("data-table")
lZeile = 1
For Each zeile In daten.Rows
For Each zelle In zeile.Cells
If lSpalte = 4 Or lSpalte = 5 Then
Workbooks(wbAE).Worksheets(wkshAE).Cells(lZeile + 5, lSpalte + 10) = Format(zelle. _
innerText, "0000")
End If
lSpalte = lSpalte + 1
Next
lSpalte = 1
lZeile = lZeile + 1
Next
Next
ie.Quit
End Sub

Anzeige
AW: versuche es mal mit der initEvent method
24.07.2017 16:22:44
Marco
Hallo Tino,
ich nehme es zurück, es funktioniert doch :). Probierte es einfach nochmal aus und dann funktionierte es. Eine Fehlermeldung kam nach weiteren 8 Tests nur einmal vor.
Danke dir!
SG Marco

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige