Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1604to1608
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
Web Formular automatisch ausfüllen
27.01.2018 09:26:20
Erik
Hallo zusammen,
habe folgenden Code gefunden und wollte diesen auf mein Formular abändern.
Bekomme es aber nicht hin.
Was muß ich ändern, damit die Felder korrekt ausgefüllt und der Login Button betätigt wird ?
Gruß
Erik
Sub anmelden_bei_eParts()
Dim IEApp As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "http://unirent.info/epart/index.html"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
With IEApp.Document
Do: Loop Until .ReadyState = "complete"
.getelementbyid("txtLogin").Value = "Benutzername"
.getelementbyid("txtPassword").Value = "Passwort"
.getelementbyid("frmLogin:_id21").Click
End With
Set IEApp = Nothing
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Web Formular automatisch ausfüllen
27.01.2018 12:18:28
Zwenn
Hallo Erik,
für das Fernsteuern von Webseiten muss man immer einen individuellen Code verwenden. Du kannst also nicht einfach ein Makro nehmen, das Anton mal für eine ganz andere Seite geschrieben hat. Da ich jetzt nicht viel Zeit habe und anhand Deiner herangehensweise auch nicht sicher bin, ob Du (ohne Dir zu nahe treten zu wollen), meine Erklärungen nachvollziehen könntest, nur folgendes.
Die von Dir angegebene URL http://unirent.info/epart/index.html läd ein Frameset aus drei Frames. Im mittleren wird angezeigt, was Du steuern möchtest. Deshalb muss man direkt auf den Inhalt dieses Frames zugreifen. Das geht am einfachsten, wenn man ihn direkt läd. Das geht über die URL http://test65.aciweb.de/eparts/1p840/startmain.php.
In dem dann vorliegenden HTML Code liegen die Input-Elemente, die Du steuern willst. Da sie die ersten drei auf der Seite sind, lassen sie sich nun sehr leicht ansprechen. Man bildet mit getElementsByTagName("input") ein Array, dessen erste drei Elemente, bestimmt durch die HTML-Struktur, Deine Felder für den Benutzernamen (Element 0), das Passwort (Element 1) und den Submit Button (Element 2) sind.
Folgendes Makro loggt Dich automatisch ein, nachdem Du Deine richtigen Benutzerdaten eingetragen hast. Allerdings weiß ich nicht, wie die Seite nach dem Einloggen aussehen wird. Falls es weiterhin drei Frames sein sollen, kann es sein, dass das Layout nun etwas in die Breite gezogen wirkt:

Sub anmelden_bei_eParts()
Dim IEApp As Object
Dim knotenAst As Object
Dim url As String
'url = "http://unirent.info/epart/index.html"
url = "http://test65.aciweb.de/eparts/1p840/startmain.php"
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate url
Do Until IEApp.ReadyState = 4: DoEvents: Loop
Set knotenAst = IEApp.Document.getElementsByTagName("input")
If Not knotenAst Is Nothing Then
knotenAst(0).Value = "Benutzername"
knotenAst(1).Value = "Passwort"
knotenAst(2).Click
Else
MsgBox "Kein Formular gefunden."
End If
Set IEApp = Nothing
Set knotenAst = Nothing
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Web Formular automatisch ausfüllen
29.01.2018 10:33:49
Erik
Hallo Zwenn,
vielen Dank für Deine Antwort.
...ob Du (ohne Dir zu nahe treten zu wollen),
kein Problem, das ist ja auch so. :-)
Durch Deine Hilfe konnte ich noch eine Seite weitergelangen.
Dort benötige ich als Dateinamen immer die Datei: Bestellung E-Parts.csv
und anschließend die Bestätigung des Bestell-Button.
Wenn Du mir damit noch einmal helfen könntest, wäre mein Anliegen erledigt. ;-)
Viele Grüße
und nochmals Dankeschön
Gruß
Erik
Hier ein Link zum html Code:
https://www.herber.de/bbs/user/119359.txt
Anzeige
AW: Web Formular automatisch ausfüllen
29.01.2018 20:05:19
Zwenn
Hallo Erik,
das bedeutet, Du musst erst eine CSV-Datei hochladen? Dazu muss sie über den Datei-Öffnen-Dialog ausgewählt werden, wenn ich das richtig verstanden habe. Ich weiß nicht, ob man diesen Dialog automatisieren kann. Alternativ könnte man evtl. die Felder, die vermutlich durch die CSV-Datei gefüllt werden(?) via Makro füllen. Dazu müsste man die Daten aus der CSV dann erst im Makro verarbeiten, um sie den richtigen Feldern zuzuordnen. Den Bestellen-Button dann zu klicken, ist das wesentlich kleinere Problem ;-)
Ist es so, wie ich vermute?
Viele Grüße,
Zwenn
AW: Web Formular automatisch ausfüllen
30.01.2018 08:19:08
Erik
Hallo Zwenn,
genau so ist es, du hast es alles richtig verstanden, aber wird das dann jetzt nicht zu komplex?
Ich dachte, man könnte die Datei automatisch laden.
Wie man die Datei via Makro verarbeiten soll, weiß ich ja auch wieder nicht :-(
Danke
und Gruß
Erik
Anzeige
AW: Web Formular automatisch ausfüllen
30.01.2018 08:35:27
Erik
Hallo nochmal,
habe Ihnen einmal eine *.jpg zum besseren Verständnis beigefügt.
Userbild
Nach dem der Button "Datei auswählen" angeklickt wurde kann ich die hochzuladende Datei auswählen.
Mit klick auf "Einfügen" wird der Inhalt der *csv den Feldern zugeordnet.
Anschließend wird mit dem Button "Bestellung" (nicht auf dem Bild zu sehen) die Bestellung abgesendet.
Gruß Erik
AW: Web Formular automatisch ausfüllen
30.01.2018 10:59:45
Zwenn
Hallo Erik,
kannst Du mal eine CSV-Datei hochladen? Wichtig ist vor allem der Aufbau, die Struktur. Falls der Inhalt geheim ist, musst Du die Inhalte austauschen.
Gehe ich recht in der Annahme, dass maximal 20 Positionen pro Bestellvorgang möglich sind? So viele gibt es in dem HTML-Quellcode, den Du in der .txt zur Verfügung gestellt hast. Pro Bestell-Position sind es dann drei Eintragungen in der .csv oder? Teilenummer, Menge und Lagerort (auch wenn ich Lagerort nicht verstehe). Nicht eingeben kann man hingegen Teilebezeichnung, Teilepreis und Verfügbarkeit. Also gehe ich davon aus, dass das System diese Werte automatisch vervollständigt.
Wie verhält sich die Seite denn, wenn die Verfügbarkeit für eine Position 0 ist?
Viele Grüße,
Zwenn
Anzeige
AW: Web Formular automatisch ausfüllen
30.01.2018 11:50:08
Erik
Hallo Zwenn
anbei eine *.csv Beispiel Datei (allerdings als xlsx - csv kann ich nicht hochladen). https://www.herber.de/bbs/user/119399.xlsx
Gehe ich recht in der Annahme, dass maximal 20 Positionen pro Bestellvorgang möglich sind?
Nein max. 200! Man kann rechts neben der 20 auf den „Pfeil unten“ klicken, dann geht ein Auswahlfenster auf: 20,50,100 oder 200
Wenn ich allerdings eine *.csv Datei „Einfüge“ werden nur die Position eingefügt, die auch in der *.csv Datei vorhanden sind.
Das wären also in meiner Beispieldatei nur 3 Zeilen.
Pro Bestell-Position sind es dann drei Eintragungen in der .csv oder? Teilenummer, Menge und Lagerort (auch wenn ich Lagerort nicht verstehe).
Das ist richtig. 3 Einträge (Lagerort ist eine blöde Bezeichnung wir verwenden Ihn als Kundeninfo)
Nicht eingeben kann man hingegen Teilebezeichnung, Teilepreis und Verfügbarkeit. Also gehe ich davon aus, dass das System diese Werte automatisch vervollständigt.
Auch das ist korrekt so!
Wie verhält sich die Seite denn, wenn die Verfügbarkeit für eine Position 0 ist?
Es wird einfach angezeigt das kein Bestand vorhanden ist (Das ist nur eine Information für uns, damit wir wissen, dieses Teil wird aus dem Hauptlager bestellt und die Lieferung dauert etwas länger). Die Position bleibt trotzdem in der Liste und wird ganz normal übertragen.
Userbild
Vielen lieben Dank
und Gruß
Erik
Anzeige
AW: Web Formular automatisch ausfüllen
30.01.2018 12:36:30
Zwenn
Ich muss mal ausprobieren, ob man das Hochladen der CSV-Datei automatisieren kann, mache mir da allerdings wenig Hoffnung. Die Positionen aus der CSV-Datei über ein Makro in die Webseite einzutragen ginge hingegen, sofern die ersten Spalten, die Du mit x versehen hast, keine Relevanz für so einen Bestellvorgang haben. Ansonsten müssten die ja auch noch irgendwo untergebracht werden(?)
Ich gehe mal davon aus, dass man einfach immer 200 Zeilen wählen könnte, selbst, wenn es nur drei Positionen gibt. Ist das so? Freie Positionen wird das System ja ignorieren nehme ich an.
Eine CSV-Datei ist auch nur eine reine Text-Datei, Du kannst also die Endung .csv einfach gegen .txt austauschen und eine Datei hochladen. In einer .xlsx kann ich den Aufbau der zugrunde liegenden .csv nicht mehr nachvollziehen. Das Einzige, was Du austauschen darfst, sind wirklich die Inhalte der eigentlichen Daten. Falls vorhanden muss die Kopfzeile bleiben, sowie Spaltentrenner und ggf. Texteinschlusszeichen der Spalteneinträge, meistens Anführungsstriche. Diese Zeichen verschwinden in einer .xlsx
Bekommst Du die Daten denn als .csv oder kommen die eh aus einer Excel-Tabelle? Falls letzteres, kann man sich den Umweg über die .csv natürlich sparen und die Daten direkt an die Seite senden.
Zum Ausprobieren komme ich frühestens heute Abend.
Anzeige
AW: Web Formular automatisch ausfüllen
30.01.2018 13:13:56
Erik
Hallo Zwenn,
sofern die ersten Spalten, die Du mit x versehen hast, keine Relevanz für so einen Bestellvorgang haben
Nein sind nur Plazhalter, warum? keine Ahnung, die haben das halt so bei E-Parts eingebaut.
Ich gehe mal davon aus, dass man einfach immer 200 Zeilen wählen könnte, selbst, wenn es nur drei Positionen gibt. Ist das so? Freie Positionen wird das System ja ignorieren nehme ich an.
Ich denke auch, das das so ist.
Bekommst Du die Daten denn als .csv oder kommen die eh aus einer Excel-Tabelle? Falls letzteres, kann man sich den Umweg über die .csv natürlich sparen und die Daten direkt an die Seite senden.
die kommen aus meiner Excel Tabelle:
Sub csv_umwandeln()
Dim strTemp As String
Dim strDateiname As String
Dim strTrennzeichen As String
Dim wie As Integer
Dim iZeile As Long
Dim r() As Variant
Dim s As Long
r = Array(5, 7, 4, 6)
ChDrive Environ("homedrive")
ChDir Environ("homedrive") & Environ("homepath") & "\downloads\"
strDateiname = "Bestellung E-Parts.csv"
wie = vbNo
If Dir(strDateiname)  "" Then
wie = MsgBox("Daten anhängen?", vbYesNo, strDateiname & "Datei bereits vorhanden")
If wie = vbCancel Then Exit Sub
End If
strTrennzeichen = ";"
If wie = vbNo Then
Open strDateiname For Output As #1
Else
Open strDateiname For Append As #1
End If
For iZeile = Selection.Row To Selection.Row + Selection.Rows.Count - 1
For s = 0 To UBound(r)
If s = 0 Then
strTemp = "x;x;x;x;" & Cells(iZeile, r(s))
Else
If s = 2 Then
strTemp = strTemp & strTrennzeichen & Cells(iZeile, 2) & " " & Cells( _
iZeile, r(s))
Else
strTemp = strTemp & strTrennzeichen & Cells(iZeile, r(s))
End If
End If
Next s
Print #1, strTemp
Next iZeile
Close #1
MsgBox "Datei wurde exportiert nach" & vbCrLf & strDateiname
End Sub
wäre natürlich top, wenn man die *csv nicht extra exportieren müßte

Zum Ausprobieren komme ich frühestens heute Abend.

Egal! Ich bin froh, daß Sie sich überhaupt Zeit dafür nehmen :-)
https://www.herber.de/bbs/user/119406.txt
Vielen Dank
Erik
Anzeige
AW: Web Formular automatisch ausfüllen
30.01.2018 13:20:11
Erik
Hallo !
Habe noch etwas vergessen.
Im VBA wird auch noch die Teilebezeichnung übernommen, die kann weg!
Gruß
Erik
AW: Web Formular automatisch ausfüllen
31.01.2018 00:44:02
Zwenn
Hallo Erik,
das mit dem Hochladen der CSV-Datei funktioniert nicht, soweit ich es feststellen konnte. Das ist aber (vermutlich) nicht so wild. Ich habe Dir hier eine XLSM-Datei hochgeladen, in der eine Tabelle "Daten" und ein fertiges Makro hinterlegt sind.
Das Makro loggt Dich auf der Seite ein (war ja schon fertig) und dann gehe ich davon aus, dass Du auf der Bestellformularseite bist. Falls nicht, muss da noch eingebaut werden, dass das Makro auf dem Bestellformular landet.
Vor dem Aufrufen der Seite prüft das Makro, ob in der Daten-Tabelle mehr als 200 Positionen eingetragen sind. Falls ja, wird das Makro abgebrochen. Nach dem Einloggen wird das Bestellformular auf 200 mögliche Bestellpositionen erweitert. Anschließend werden die Daten aus der Daten-Tabelle in das Bestellformular übertragen.
Im Makro ist auch schon der Code hinterlegt, um den Bestell-Button auszulösen. Den Teil habe ich aber auskommentiert. So kannst Du erstmal testen, ob das Makro sich korrekt einloggt und die Daten korrekt einträgt. Da ich nicht weiß, wie schnell das System die automatisch zu ergänzenden Daten holt, ist vor dem Bestell-Button noch eine Pause eingebaut. Wie lang die sein muss, musst Du aber selber rausfinden. Ich habe das mal auf 5 Sekunden voreingestellt.
Falls das Nachladen der genannten Zusatzinfos durch den Button "Artikelinfo" ausgelöst werden muss, muss das noch ins Makro eingebaut werden.
Folgende Dinge konnte ich nicht testen:
  • Ob das Bestellformular nach dem Einloggen direkt zur Verfügung steht

  • Ob das Formular wirklich auf 200 Positionen erweitert wird

  • Ob die onClick-Ereignisse der Buttons "Bestätigen" und "Bestellung" korrekt ausgelöst werden

  • Ob die Zusatzinfos wirklich automatisch nachgeladen werden

  • Wenn das so funktioniert, bist Du die CSV-Datei los. Das Makro ist so programmiert, dass Du es von einer beliebigen Tabelle aus starten kannst. Es wird in jedem Fall korrekt auf die Daten-Tabelle zugegriffen. Auf welche Weise Du diese befüllst, spielt keine Rolle. Die Platzhalter brauchst Du natürlich so auch nicht mehr. Die drei vorhandenen Spalten sollten ausreichen. Ich habe eine Kopfzeile zugefügt, weil es so übersichtlicher ist (finde ich).
    Ok, teste jetzt erstmal, ob das soweit funktioniert oder ob das alles Grütze ist ;-)
    https://www.herber.de/bbs/user/119425.xlsm
    Viele Grüße,
    Zwenn
    Anzeige
    AW: Web Formular automatisch ausfüllen
    31.01.2018 09:03:15
    Erik
    Hallo Zwenn,
    zuerst einmal vielen vielen Dank für Ihre Hilfe!
    Das Makro startet die Seite wie gewünscht, loggt sich ein und trägt die Teilepositionen ein.
    Der Bestellbutton wird am Ende allerdings nicht ausgelöst, nachdem ich ihn wieder einkommentiert (heißt das so :-)) habe.
    Was noch geändert werden müsste ist, das ich in meiner Tabelle aus der die ursprüngliche *.csv Datei erstellt wurde, ich die zu bestellenden Teilenummern markiert hatte und nur die bestellt wurden.
    Die geänderte Tabelle habe ich nochmal angefügt.
    Das bedeutet wenn zB. G7-G11 markiert sind und ich das Makro starte sollen nur die Zeilen 7-11 bestellt werden usw.
    Der Name in Spalte B und das Kennzeichen in Spalte D sollen zusammengefasst bei E-Parts in die Lagerort Spalte.
    Hoffe es ist so verständlich.
    Alles andere funktioniert soweit!
    TOP vielen Dank.
    https://www.herber.de/bbs/user/119427.xlsm
    Anzeige
    AW: Web Formular automatisch ausfüllen
    31.01.2018 10:04:08
    Zwenn
    Hallo Erik,
    das ist doch schonmal super soweit :-) Hier 'brennt leider grade die Hütte', wie man so sagt. Eines unserer eigenen Auslesetools ist ausgefallen, weil der Plattformbetreiber etwas an seinen HTML-Seiten geändert hat. Das muss ich heute wieder hinbekommen, sonst vergeht zu viel Zeit und wir verpassen zu viele Daten. Also werde ich wieder frühestens heute Abend dazu kommen, mich nochmal um diese Sache zu kümmern.
    Warum der Bestellen Button trotz Aktivierung des Codes nicht funktioniert, kann ich mir im Moment allerdings nicht vorstellen. Wird das Bestellformular denn auf 200 Positionen erweitert? Also nicht nur die Zahl im Dropdown auf 200 gesetzt, sondern werden auch wirklich 200 Zeilen zur Eingabe von Bestellpositionen generiert? Werden die Zusatzinfos, wie Verfügbarkeit, usw., nachgeladen, wie erwartet?
    Viele Grüße,
    Zwenn
    AW: Web Formular automatisch ausfüllen
    31.01.2018 10:27:33
    Erik
    Hallo Zwenn,
    Hier 'brennt leider grade die Hütte', wie man so sagt.
    wie gesagt ich habe Zeit :-) bin froh das Die das machen.
    Das gibts nicht so oft :-)
    Warum der Bestellen Button trotz Aktivierung des Codes nicht funktioniert, kann ich mir im Moment allerdings nicht vorstellen.
    ich habe den Code:
    For Each knoten In knotenAst
    If knoten.getAttribute("value") = "Bestellung" Then
    knoten.onClick
    Do Until IEApp.ReadyState = 4: DoEvents: Loop
    Exit For
    End If
    Next knoten
    mal auf
    If knoten.getAttribute("value") = "Artikelinfo" Then
    geändert, aber der Button wird auch mit "Artikelinfo" nicht ausgeführt.
    Wird das Bestellformular denn auf 200 Positionen erweitert? Also nicht nur die Zahl im Dropdown auf 200 gesetzt, sondern werden auch wirklich 200 Zeilen zur Eingabe von Bestellpositionen generiert?
    Nein es wird nur im Dropdwon auf 200 gesetzt (was nicht schlimm wäre)
    Werden die Zusatzinfos, wie Verfügbarkeit, usw., nachgeladen, wie erwartet?
    Nein, wie oben erwähnt, löst der Button "Artikelinfo" nicht aus!
    sonst würde das bestimmt gehen.
    Ich könnte Ihnen zum testen das Passwort geben. Müsste ich Ihnen dann aber privat zusenden :-)
    Gruß
    Erik
    AW: Web Formular automatisch ausfüllen
    02.02.2018 00:05:10
    Zwenn
    Hallo Erik,
    die Hütte ist weitestgehend gelöscht. Auch wenn mich dass meine letzte Nacht (und viel Zeit am heutigen Tag) gekostet hat. Aber immer gut, wenn eine Mail um kurz nach 4:00 Uhr an den Chef dann reicht, um den Wecker einfach ausschalten zu können :-)
    Obwohl ich noch jemand anderem seit Wochen die Beendigung eines anderen Projektes versprochen habe, habe ich heute zwischendurch mal etwas recherchiert, wie man onClick Ereignisse auslösen kann. Da bin ich auch fündig geworden, bin aber immer noch nicht sicher wie oder ob das wirklich funktioniert. Da gibt es sehr gegensätzliche Aussagen, obwohl das Vorgehen auf den ersten Blick für mich gleich aussieht. (FireEvent, ist da das Stichwort)
    Testen kann ich das aber in der Tat nur, wenn ich Zugriff auf die Seite hätte. Du solltest Dir überlegen, wie freizügig Du mit Deinen Zugangsdaten umgehst. Immerhin kann man da Bestellungen auslösen. Aber falls Du noch gewillt bist, mich da mal etwas 'forschen' zu lassen: zwenn_glueckspilz@gmx.de
    Den Bestell-Button lasse ich unangetastet. Wie oder ob das Vorgehen funktioniert, kann ich auch am Button für die Generierung für die 200 Bestellpositionen testen. Bei beiden Buttons geht es (wie gesagt) darum, das onClick-Ereignis irgendwie auszulösen (glaube ich). Das sollte also gleich funktionieren dann, falls es geht.
    Allerdings bin ich am Wochenende in der Heimat, hoch im Norden. Also wird das frühestens kommende Woche wieder etwas mit uns.
    Viele Grüße,
    Zwenn

    67 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige