Microsoft Excel

Herbers Excel/VBA-Archiv

WEB Formular ausfüllen. | Herbers Excel-Forum


Betrifft: WEB Formular ausfüllen. von: Markus
Geschrieben am: 04.12.2009 09:37:15

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

  

Betrifft: AW: WEB Formular ausfüllen. von: MichaV
Geschrieben am: 04.12.2009 12:20:15

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


  

Betrifft: AW: WEB Formular ausfüllen. von: Anton
Geschrieben am: 04.12.2009 12:41:25

Hallo Markus,

guck hier, ob du was damit anfangen kannst:
https://www.herber.de/forum/archiv/1100to1104/t1101712.htm

mfg Anton


  

Betrifft: AW: WEB Formular ausfüllen. von: Markus
Geschrieben am: 04.12.2009 14:05:53

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.


  

Betrifft: AW: WEB Formular ausfüllen. von: MichaV
Geschrieben am: 05.12.2009 08:55:42

Gibst ne Möglichkeit dass Du uns den Link und den Login schickst (ist ja vlt. ein Gäste-Login vorhanden)?

Gruss- Micha


  

Betrifft: AW: WEB Formular ausfüllen. von: Markus
Geschrieben am: 06.12.2009 13:18:38

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


  

Betrifft: AW: WEB Formular ausfüllen. von: Anton
Geschrieben am: 06.12.2009 14:19:59

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


  

Betrifft: AW: WEB Formular ausfüllen. von: Markus
Geschrieben am: 07.12.2009 15:16:47

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


  

Betrifft: AW: WEB Formular ausfüllen. von: Anton
Geschrieben am: 07.12.2009 17:04:57

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


  

Betrifft: AW: WEB Formular ausfüllen - gelöst von: Markus
Geschrieben am: 07.12.2009 17:45:26

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


Beiträge aus den Excel-Beispielen zum Thema "WEB Formular ausfüllen."