ey-jo
Goto Top

Bestimmtes Formular automatisch ausfüllen mit Excel als Datenquelle.

Hallo ich suche ein Tool welches ein bestimmtes Webformular ausfüllt und absendet.

Die Daten die eingegeben werden sollen sind in einer Excel Tabelle. Pro Zeile sozusagen ein Datensatz fürs Formular.

Habt ihr eine Idee was man da machen kann?

Vielen Dank euch schonmal.

Content-ID: 234447

Url: https://administrator.de/contentid/234447

Ausgedruckt am: 26.11.2024 um 11:11 Uhr

colinardo
colinardo 03.04.2014 aktualisiert um 15:54:02 Uhr
Goto Top
Hallo ey-jo,
ich mache sowas mit AutoIT und der IE-Automatisierung. Hier gibt es eine Funktionsübersicht, die Funktionen die mit _IE beginnen sind für dein Vorhaben zu verwenden. Eine Verbindung zu Excel lässt sich damit auch Problemlos herstellen.
Wenn du mal den Link zum Formular und die Positionierung der Daten in Excel postest kann ich dir dazu mal ein Beispiel zusammenstellen, wenn du möchtest ..

Grüße Uwe
ey-jo
ey-jo 03.04.2014 aktualisiert um 16:11:08 Uhr
Goto Top
anrede vorname name strasse hausnummer plz ort geburtsdatum telefon mobil email kommentar

kann man auch pulldownmenüs oder checkboxen automatisieren?

das webformular hat halt ganz normale zeilen zum ausfüllen checkboxen und pulldownmenüs und ein kommentarfeld.
colinardo
colinardo 03.04.2014 aktualisiert um 16:43:08 Uhr
Goto Top
Zitat von @ey-jo:
kann man auch pulldownmenüs oder checkboxen automatisieren?
sicher kein Problem geht alles, man muss halt ein wenig vom programmieren verstehen ...
kannst du mal ein Link zum Formular posten ??

das hier ist z.B. eine beispielhafte Automatisierung des Logins von Administrator.de:
#NoTrayIcon
#include <ie.au3>
$username = InputBox("Username","Bitte geben Sie den Benutzernamen von Administrator.de ein")  
$pass = InputBox("Passwort","Bitte geben Sie das Password von Administrator.de ein","","*")  
$objIE = _IECreate("https://administrator.de/login/",0,1,1)  
$objInputs = _IETagNameGetCollection($objIE,"input")  
for $obj in $objInputs
	if $obj.Name = "login" then  
		$objNickname = $obj
	EndIf
	if $obj.Name = "password" then  
		$objPass = $obj
	EndIf
	if $obj.Name = "login_button" then  
		$objSubmit = $obj
	EndIf
Next
_IEFormElementSetValue($objNickname,$username)
_IEFormElementSetValue($objPass,$pass)
_IEAction($objSubmit,"click")  
_IELoadWait($objIE,300)
ey-jo
ey-jo 03.04.2014 um 16:23:00 Uhr
Goto Top
Ne geht leider nicht ist was firmeninternes. ich wollte schauen ob man so einige Arbeitsschritte sparen kann.

Ich hab Autoit vor Ewigkeiten genutzt um xp unattended Programme zu installieren.
Mondragor
Mondragor 03.04.2014 um 16:24:04 Uhr
Goto Top
Also ich stelle jetzt mal die Frage nach dem eigentlichen Sinn dahinter.
Wenn diese Daten in eine MySQL-Datenbank sollen, so bietet beispielsweise der XAMPP-PHPMyAdmin die Möglichkeit, eine Excel-Datei direkt einzulesen.
Damit könnte man sich die Automatisierung sparen.
Ansonsten gibt es noch AHK-Script, womit man für annährend alle Programme alle möglichen Maus- und Tastaturevents machen kann.

Was ist denn das eigentliche Ziel hinter dieser Aktion??
colinardo
Lösung colinardo 03.04.2014, aktualisiert am 04.04.2014 um 11:27:56 Uhr
Goto Top
Zitat von @ey-jo:

Ne geht leider nicht ist was firmeninternes. ich wollte schauen ob man so einige Arbeitsschritte sparen kann.
und dein Excel-Sheet kannst du damit Beispielsweise so Zeile für Zeile auslesen, das ganze dann noch jeweils an das Formular geschickt fertig ist die Kiste. dazu müsstest du aber den Quelltext der Seite analysieren, von selber geht das nicht.
; Pfad zum Excel-File
$excelmappe = "E:\Mappe.xlsx"  
; Excel-ComObject erzeugen
$objExcel = ObjCreate("Excel.Application")  
; Excel anzeigen
$objExcel.Visible = True
;Arbeitsmappe öffnen
$wb = $objExcel.Workbooks.Open($excelmappe)
; erstes Worksheet
$ws = $wb.Worksheets(1)
; Anfangszelle der Daten (wenn erste Zeile Überschriften enthält)
$rngStart = $ws.Range("A2")  
; Endzelle ermitteln
$rngEnd = $rngStart.End(-4121)
; für jede Zeile im Bereich
for $cell in $ws.Range($rngStart,$rngEnd)
	$anrede = $cell.Value
	$vorname = $cell.Offset(0,1).Value
	$name = $cell.Offset(0,2).Value
	$strasse = $cell.Offset(0,3).Value
	$hausnummer = $cell.Offset(0,4).Value
	$plz = $cell.Offset(0,5).Value
	$ort = $cell.Offset(0,6).Value
	$geburtsdatum = $cell.Offset(0,7).Text
	$telefon = $cell.Offset(0,8).Value
	$mobil = $cell.Offset(0,9).Value
	$email = $cell.Offset(0,10).Value
	$kommentar = $cell.Offset(0,11).Value
         
        ; Als Beispiel nur dem Namen jeder Zeile anzeigen lassen
	msgbox(0,"",$name)  
Next