HERBERS Excel-Forum - das Archiv
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

AW: WEB Formular ausfüllen.
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
AW: WEB Formular ausfüllen.
Anton

Hallo Markus,
guck hier, ob du was damit anfangen kannst:
https://www.herber.de/forum/archiv/1100to1104/t1101712.htm
mfg Anton
AW: WEB Formular ausfüllen.
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.
AW: WEB Formular ausfüllen.
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.
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
AW: WEB Formular ausfüllen.
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
AW: WEB Formular ausfüllen.
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
AW: WEB Formular ausfüllen.
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
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