Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: WEB Formular ausfüllen.

WEB Formular ausfüllen.
Markus
Hallo zusammen,
ich würde gerne ein Formular im Internet mittels Internet Explorer mit Daten aus einer Excel Tabelle füllen. Das Problem dabei ist dass diese Formular erst nach Anmeldung und einigen klicks geladen wird. Die Seite enhält dann eine jeweils andere session ID so dass ich Sie nicht direkt über die URL anspringen kann.
Ich möchte daher das Formular manuell öffnen und dann per VBA die Daten in die einzelnen Felder eingeben. Mein Problem dabei: Alle Beispiele die ich hier im Forum und auf anderen Seiten gefunden haben beginnen damit dass mit:
Dim IEApp As Object
Dim IEDocument As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "http://www.irgendwas.com"
ein neues Fenster öffnen. Ich hab leider keine Möglichkeit gefunden das bereits geöffnete IE Fenster anzusprechen. Evtl. könnte man die aktuelle URL des offenen Fensters auslesen und in das neu zu öffnende Fenster übergeben? Manuell funktioniert das.
Hat jemand eine Idee?
Danke un Gruß
Markus
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: WEB Formular ausfüllen.
04.12.2009 12:20:15
MichaV
Hallo,
Du könntest Dir einen eifgenen Webbrowser¨mit dem Webbrowser-Steuerelement basteln. Darauf kannst Du dann einfach mit VBA zugreifen, den HTML Code auslesen und Formularfelder ausfüllen.
Reicht das als Tip zum suchen oder brauchst Du mehr Infos? Ich lass die FRage mal offen.
Gruss- Micha
Anzeige
AW: WEB Formular ausfüllen.
04.12.2009 14:05:53
Markus
Hallo,
Danke für die Info. Ich hab mal getestet. Das Problem ist dass die Seite die ich aufrufe keinen "win.Document.Title" hat. d.h. Variable bleibt leer.
Daher klappt das mit dem Beispiel leider nicht.
Inzwischen habe ich "LocationURL" in der Klasse InternetExplorer gefunden. Weiß aber bisher nicht wie ich die abfragen kann.
Ich fürchte mal das ist zu kompliziert für mich.
Anzeige
AW: WEB Formular ausfüllen.
05.12.2009 08:55:42
MichaV
Gibst ne Möglichkeit dass Du uns den Link und den Login schickst (ist ja vlt. ein Gäste-Login vorhanden)?
Gruss- Micha
AW: WEB Formular ausfüllen.
06.12.2009 13:18:38
Markus
Hallo Micha,
Es geht um die Online Seite von DPD. http://delisonline.dpd.de/delisonline
Einen Gastzugang gibt es leider nicht. Meine Idee ist es Kundenadressen, die mir unser ERP auf Knopfdruck in ein Excel Sheet exportiert in die Eingabemaske von DPD zu übergeben.
Gruß
Markus
Anzeige
AW: WEB Formular ausfüllen.
06.12.2009 14:19:59
Anton
Hallo Markus,
so kannst du dich bei dieser Seite anmelden:
Code:

Sub anmelden_bei_DPD()
  Dim IEApp As Object  
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "http://delisonline.dpd.de/delisonline/"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  With IEApp.Document  
    Do: Loop Until .ReadyState = "complete"    
    .getelementbyid("txtLogin").Value = "Benutzername" 'anpassen
    .getelementbyid("txtPassword").Value = "Passwort" 'anpassen
    .getelementbyid("frmLogin:_id21").Click
  End With  
  Set IEApp = Nothing  
End Sub  


mfg Anton
Anzeige
AW: WEB Formular ausfüllen.
07.12.2009 15:16:47
Markus
Anton, Du bist mein Held,
Mittels deines Codes bin ich nahezu am Ziel. Anmelden, Navigieren und ausfüllen der normalen Formularfelder klappt prima. Nach dem Anmelden navigiert das Makro zur passenden Seite und trägt die entsprechende Werte aus dem Excel sheet ein.
Hier mal mein bisheriger Code:
Sub Uebergabe_an_DPD()
Dim IEApp As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate "http://delisonline.dpd.de/delisonline/"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
With IEApp.Document
Do: Loop Until .ReadyState = "complete"
.getelementbyid("txtLogin").Value = "Login" 'anpassen
.getelementbyid("txtPassword").Value = "Passwort" 'anpassen
.getelementbyid("frmLogin:_id21").Click
End With
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
With IEApp.Document
Do: Loop Until .ReadyState = "complete"
.getelementbyid("rt04").Click 'ruft DELISreturn auf
End With
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
With IEApp.Document
Do: Loop Until .ReadyState = "complete"
.getelementbyid("txtAdrReferenz").Value = Range("Tabelle1!B1").Value 'anpassen
.getelementbyid("txtName").Value = Range("Tabelle1!B2").Value 'anpassen
.getelementbyid("txtName2").Value = Range("Tabelle1!B3").Value  'anpassen
.getelementbyid("txtName3").Value = Range("Tabelle1!B4").Value  'anpassen
.getelementbyid("txtName4").Value = Range("Tabelle1!B5").Value 'anpassen
.getelementbyid("txtStrasse").Value = Range("Tabelle1!B6").Value 'anpassen
.getelementbyid("txtPLZ").Value = Range("Tabelle1!B7").Value 'anpassen
.getelementbyid("txtOrt").Value = Range("Tabelle1!B8").Value 'anpassen
.getelementbyid("cboLand").Value = Range("Tabelle1!B9").Value 'anpassen, nur Kürzel
.getelementbyid("txtTelefon").Value = Range("Tabelle1!B10").Value 'anpassen
.getelementbyid("cboZustelladresse").Value = Range("Tabelle1!B11").Value 'anpassen
.getelementbyid("txtPaketAnzahl").Value = Range("Tabelle1!B12").Value 'anpassen
.getelementbyid("chkInfoZeile").Click 'Infozeile 1 ausgeben ein
.getelementbyid("txtReferenz").Value = Range("Tabelle1!B13").Value 'anpassen
End With
Set IEApp = Nothing
End Sub
Das einzige was noch nicht klappt ist das übergeben der Werte and die Comboboxen "cboLand" und "cboZustelladresse" Die bleiben einfach leer.
Wenn hier noch jemand eine Idee hätte wäre das natürlich super.
Danke und Gruß
Markus
Anzeige
AW: WEB Formular ausfüllen.
07.12.2009 17:04:57
Anton
Hallo Markus,
du musst bei cbo's als Value nicht den Text übergeben sondern Value:
z.B. bei <option value="Abbruch"> Abbrechen</option>
muss "Abbruch" übergeben werden.
mfg Anton
AW: WEB Formular ausfüllen - gelöst
07.12.2009 17:45:26
Markus
Hallo nochmal,
Die Comboboxen lassen sich mit dem "option value" aus dem HTML Quelltext füllen. Z.B bei der Combobox Land (cboLand) mit dem Wert "D" für DE oder "A" für AT , "IRL" für IE usw.
Bei den hinterlegten Zustelladressen (cboZustelladresse) ist es ein nummerischer Index. Einfach im HTML Quelltext nach den angeboteten Auswahlen der Combobox suchen. Bei uns ist es "1301" für den ersten Listeneintrag.
Danke an alle die geholfen haben.
Markus
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

DPD Webformular automatisiert ausfüllen


Schritt-für-Schritt-Anleitung

Um das DPD Webformular mithilfe von Excel und VBA automatisch auszufüllen, befolge diese Schritte:

  1. Vorbereitung: Stelle sicher, dass du die notwendigen Daten in einer Excel-Tabelle hast. Diese Daten werden später in das Formular eingefügt.

  2. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu (Einfügen > Modul).
  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Sub Uebergabe_an_DPD()
       Dim IEApp As Object
       Set IEApp = CreateObject("InternetExplorer.Application")
       IEApp.Visible = True
       IEApp.Navigate "http://delisonline.dpd.de/delisonline/"
    
       Do: Loop Until IEApp.Busy = False
       Do: Loop Until IEApp.Busy = False
    
       With IEApp.Document
           Do: Loop Until .ReadyState = "complete"
           .getelementbyid("txtLogin").Value = "Benutzername" 'anpassen
           .getelementbyid("txtPassword").Value = "Passwort" 'anpassen
           .getelementbyid("frmLogin:_id21").Click
       End With
    
       ' Warte auf die nächste Seite
       Do: Loop Until IEApp.Busy = False
       Do: Loop Until IEApp.Busy = False
    
       ' Hier kannst du die weiteren Felder des Formulars ausfüllen
       With IEApp.Document
           Do: Loop Until .ReadyState = "complete"
           .getelementbyid("txtAdrReferenz").Value = Range("Tabelle1!B1").Value 'anpassen
           ' Weitere Felder hier hinzufügen
       End With
    
       Set IEApp = Nothing
    End Sub
  4. Anpassen der Werte: Stelle sicher, dass du die Platzhalter wie Benutzername und Passwort sowie die Zellreferenzen (Tabelle1!B1) an deine Anforderungen anpasst.

  5. Führen Sie das Makro aus: Schließe den VBA-Editor und führe das Makro aus, um das DPD Webformular automatisch auszufüllen.


Häufige Fehler und Lösungen

  • Problem: Das Login-Feld wird nicht ausgefüllt.

    • Lösung: Überprüfe die ID des HTML-Elements im Quelltext der Webseite. Möglicherweise hat sich die ID geändert.
  • Problem: Comboboxen bleiben leer.

    • Lösung: Stelle sicher, dass du den richtigen option value übergibst. Beispielsweise für das Land D für Deutschland.

Alternative Methoden

Wenn du das DPD Webformular nicht über VBA ausfüllen möchtest, kannst du folgende Alternativen in Betracht ziehen:

  • Webbrowser-Steuerelement: Erstelle einen eigenen Webbrowser mit dem Webbrowser-Steuerelement, um einfacher auf das HTML-Dokument zugreifen zu können.

  • Direktes HTML-Formular: Wenn du nur einfache Daten eingeben willst, erstelle ein lokales HTML-Formular und nutze JavaScript, um die Daten zu verarbeiten.


Praktische Beispiele

Hier sind einige Beispiele, wie du spezifische Felder im DPD Webformular ausfüllen kannst:

  • Textfelder ausfüllen:

    .getelementbyid("txtName").Value = Range("Tabelle1!B2").Value 'anpassen
  • Checkbox aktivieren:

    .getelementbyid("chkInfoZeile").Click
  • Combobox ausfüllen:

    .getelementbyid("cboLand").Value = "D" ' für Deutschland

Tipps für Profis

  • Debugging: Nutze Debug.Print in deinem Code, um Werte während der Ausführung zu überprüfen.

  • Wartezeiten: Füge dem Code Wartezeiten ein, um sicherzustellen, dass die Seite vollständig geladen ist, bevor du mit dem Ausfüllen fortfährst.

  • Sicherheit: Achte darauf, dass du sensible Daten wie Passwörter sicher behandelst.


FAQ: Häufige Fragen

1. Wie erkenne ich die IDs der Formularfelder? Du kannst die IDs der Formularfelder im Quelltext der Webseite finden, indem du mit der rechten Maustaste auf das Element klickst und "Element untersuchen" wählst.

2. Funktioniert dieser Ansatz auch mit anderen Webseiten? Ja, der VBA-Code kann an die Struktur anderer Webseiten angepasst werden. Achte darauf, die spezifischen IDs der Elemente zu verwenden.

3. Was mache ich, wenn das Formular nicht geladen wird? Stelle sicher, dass der Internet Explorer richtig konfiguriert ist und dass die Webseite zugänglich ist. Manchmal kann es auch an Pop-up-Blockern liegen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige