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

HTML Page mit Javascript via Excel lesen/schreiben

HTML Page mit Javascript via Excel lesen/schreiben
16.01.2018 15:15:09
MartinA
Hallo liebes Forum,
seit einiger Zeit arbeite ich an einem Projekt in dem ich meine Daten von der Page nennung-online.de verarbeiten kann. Man meldet sich auf der Seite mit Usernamen und Passwort an, und bekommt dann alle Daten die zu dem User gehören. Nun würde ich gerne die Daten in Excel weiter verarbeiten (lesen) und ggf. editiren (schreiben) und zurück senden.
Zwar kann ich mit Excel ganz gut umgehen, doch bin leider ein VBA DAU. Das mit dem anmelden auf _ der Page funktioniert auch schon ganz gut. Hier der entsprechende Code:

Sub NeOn_Login()
Set urllogin = Worksheets("Data").Range("C3")
Set user = Worksheets("Data").Range("C4")
Set Password = Worksheets("Data").Range("C5")
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.Navigate (urllogin)
Do
If IE.ReadyState = 4 Then
IE.Visible = True
Exit Do
Else
DoEvents
End If
Loop
IE.Document.Forms(0).all("user").Value = user
IE.Document.Forms(0).all("pass").Value = Password
IE.Document.Forms(0).submit
End Sub

Den URL, wie auch Username und Passwort übergebe ich hierbei aus meinem Excel. Nun würde ich gerne beispielsweise die PLZ auslesen und ggf. ändern, inden ich sie in Excel editiere und zurück schicke.
Hier das HTML:
https://www.herber.de/bbs/user/119016.html
Wenn Ihr mir helfen könntet wäre es wirklich ganz lieb.
Viele Grüße

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 09:30:03
Matthias
Moin!
Das sollte in etwas so gehen. Habe es mal an deinen Code mit angepasst.
'zugriff auf PLZ, setzen
IE.Document.getElementById("id_PLZ_STRASSE").Value = 12345
'auslesen in Variabel PLZ
PLZ = IE.Document.getElementById("id_PLZ_STRASSE").Value
'für die Länderkennung zum Setzen
IE.Document.getElementById("id_ISO_LAENDERKENNUNG").selectedIndex = 2
'2 ist dabei der INdex in der LIste, die müsste aber bei 0 losgehen, bin mir aber grad nicht  _
sicher
'die 2 ist dann der 3te Wert
VG
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 14:28:54
MartinA
Vielen Dank Matthias,
doch leider bekomme ich das irgendwie leider nicht hin. Bin halt doch ein DAU...
Viele Grüße trotzdem
Martin
Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 14:31:43
MartinA
... könnten wir mal via Skype drauf schauen ...?
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 15:09:47
Matthias
So modern bin ich nicht. :-) Poste doch mal bitte den Code, so wie du es versuchst und erkläre, was dir der PC als Fehler auswirft (genaue Meldung und welche Zeile)
VG
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 15:27:32
MartinA
Danke schon mal Matthias.
Hier der Code:
Function NeOn_Login()
Set URL = Worksheets("Data").Range("C3")
Set user = Worksheets("Data").Range("C4")
Set Password = Worksheets("Data").Range("C5")
Dim PLZ As Integer
Dim id_PLZ_STRASSE As Integer
Dim ie As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate (URL)
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
ie.Document.Forms(0).all("user").Value = user
ie.Document.Forms(0).all("pass").Value = Password
ie.Document.Forms(0).submit
'zugriff auf PLZ, setzen
ie.Document.getElementById("id_PLZ_STRASSE").Value = PLZ
'auslesen in Variabel PLZ
'PLZ = ie.Document.getElementById("id_PLZ_STRASSE").Value
Range("A1").Value = PLZ
End Function
Vielleicht liegt es auch daran, dass die PLZ auf der Seite https://www.nennung-online.de/mein-konto/personendaten liegt ...
Viele Grüße
Martin
Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 15:33:29
MartinA
Der Code mach ordentlich den IE auf und meldet mich entsprechend an. Danach kommt die Fehlermeldung
Laufzeitfehler '424'
Objekt erforderlich
Bei Debuggen wird dann die Zeile "ie.Document.getElementById("id_PLZ_STRASSE").Value = PLZ" gelb
AW: HTML Page mit Javascript via Excel lesen/schreiben
18.01.2018 23:00:47
Matthias
Moin!
Also habe nochmal geschaut und die Datei nachgebaut. Bei mir klappt es. Evtl. lag es daran, dass deine Seite nach dem Anmelden noch nicht fertig geladen war. Zudem war PLZ nur eine Variable, welche du noch mit einem Wert belegen musst. Hier mal der Code angepasst. Jetzt sollte er warten bis die Seite nach der Anmeldung geladen ist. Zudem gibt er (wenn es klappt) die Postleitzahl als Nachricht aus und schreibt danach 99999 rein. Am Besten das Ganze mal schrittweise von Hand durchgehen. Also in das Makro klicken und mit der F8 Tasten Zeile für Zeile durchgehen. Die Variable id_PLZ_Straße brauchst du nicht deklarieren. Das ist der Name im Quellcode der Seite. Und PLZ war nur ein Beispiel für die Postleitzahl. Das mal als Variante lassen. Glaube nämlich, dass die Rückgabe ein String ist. Das könnte sonst zu einem Fehler führen.
Function NeOn_Login()
Set URL = Worksheets("Data").Range("C3")
Set user = Worksheets("Data").Range("C4")
Set Password = Worksheets("Data").Range("C5")
Dim PLZ
Dim ie As Object
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
ie.Navigate (URL)
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
ie.Document.Forms(0).all("user").Value = user
ie.Document.Forms(0).all("pass").Value = Password
ie.Document.Forms(0).submit
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
'so liest man ihn aus
MsgBox ie.Document.getElementById("id_PLZ_STRASSE").Value
'so schreibt man neu
ie.Document.getElementById("id_PLZ_STRASSE").Value = 99999
'auslesen in Variabel PLZ
'PLZ = ie.Document.getElementById("id_PLZ_STRASSE").Value
'Range("A1").Value = PLZ
End Function

Einfach mal probieren und keine Angst, so schwer ist das nicht.
VG
Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
22.01.2018 13:44:20
MartinA
Hallo Matthias,
nun habe ich es endlich hin bekommen, dass es funktioniert. Allerdings läuft es nur, wenn ich immer einen "STOP" einsetze. Hast Du vielleicht eine Ahnung, warum das so ist?
Vielen Dank schon mal für Deine echt tolle Hilfe.
Beste Grüße Martin
Anbei noch der Code
Sub NeOn_Login()
Set URL = Worksheets("Data").Range("C3")
Set user = Worksheets("Data").Range("C4")
Set Password = Worksheets("Data").Range("C5")
Set ie = CreateObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
ie.Visible = True
ie.Navigate (URL)
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
ie.Document.Forms(0).all("user").Value = user
ie.Document.Forms(0).all("pass").Value = Password
ie.Document.Forms(0).submit
Stop
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
ie.Navigate ("https://www.nennung-online.de/mein-konto/personendaten")
Stop
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
'so liest man ihn aus
MsgBox ie.Document.getElementById("id_PLZ_STRASSE").Value
'so schreibt man neu
ie.Document.getElementById("id_PLZ_STRASSE").Value = 99999
'auslesen in Variabel PLZ
'PLZ = ie.Document.getElementById("id_PLZ_STRASSE").Value
'Range("A1").Value = PLZ
End Sub

Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
22.01.2018 15:23:45
Matthias
Moin!
Also ich habe ab und an das Problem, dass die Seite zwar geladen ist und den readystate setzt aber trotzdem noch nicht ganz da ist. Demzufolge bricht er Code dann immer ab. Ist zwar unschön aber setzte dann immer 2 bis 3 der do loops untereinander.
Würde eigentlich auch so reichen (ungetestet - habe hier grad keinen IE):
While ie.ReadyState 4 : DoEvents : Wend
Hatte aber auch eine Seite, die manchmal (wenn viele zugriffen haben) richtig lange war. Dann habe ich den Code manchmal hiermit https://msdn.microsoft.com/de-de/vba/excel-vba/articles/application-wait-method-excel waretn lassen. 3 bis 4 Sekunden haben da gereicht.
Ist jetzt nicht schön aber ersetzt zumindest dein STOP (damit habe ich noch nie gearbeitet und hier zum ersten Mal gesehen).
VG
Anzeige
AW: HTML Page mit Javascript via Excel lesen/schreiben
22.01.2018 23:10:12
MartinA
Hallo Matthias,
hier nun der Code, der wunderbar läuft. Es reicht anscheinend 2 Sekunden zu warten, und schon wird das auch was mit der Nachbarin :)
Sub NeOn_Login()
Set URL = Worksheets("Data").Range("C3")
Set user = Worksheets("Data").Range("C4")
Set Password = Worksheets("Data").Range("C5")
Set ie = CreateObject("new:{D5E8041D-920F-45e9-B8FB-B1DEB82C6E5E}")
ie.Visible = True
ie.Navigate (URL)
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
ie.Document.Forms(0).all("user").Value = user
ie.Document.Forms(0).all("pass").Value = Password
ie.Document.Forms(0).submit
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 2
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
ie.Navigate ("https://www.nennung-online.de/mein-konto/personendaten")
Do
If ie.ReadyState = 4 Then
ie.Visible = True
Exit Do
Else
DoEvents
End If
Loop
'so liest man ihn aus
'ie.Document.getElementById("id_PLZ_STRASSE").Value
'so schreibt man neu
'ie.Document.getElementById("id_PLZ_STRASSE").Value = 99999
'auslesen in Variabel PLZ
PLZ = ie.Document.getElementById("id_PLZ_STRASSE").Value
Range("A1").Value = PLZ
End Sub
Tausend Dank ... an dieser Idee arbeite ich bereits eine Ewigkeit. Sollte ich unverhofft damit reich werden, dann ist Dir natürlich ein dicker Scheck sicher.
Viele Grüße
Martin
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige