Ich möchte eine Datei vollautomatisch auf meinen Server hochladen. Da es per FTPS nicht klappt, habe ich jetzt eine Webseite programmiert, die den Upload der Datei über ein HTML-Formular mit Passwortschutz ermöglicht.
Manuell funktioniert das bereits einwandfrei. Aber nun möchte ich das auch automatisieren.
Beispiele für den Aufruf des IE und das Ausfüllen von Formularfeldern gibt es im Internet zu finden. Ich habe mich an dieser Seite orientiert:
http://www.automateexcel.com/de/vba/automatisierung-internet-explorer-ie-mittels-vba/
Problem Nummer 1: SendKeys läuft offensichtlich zu schnell, es werden nur wenige Zeichen in das Passwortfeld übergeben, auch mit der Option wait=true. Lösung: String in einzelne Zeichen zerlegen und diese einzeln per SendKeys verschicken mit 100 ms Pause dazwischen.
Problem Nummer 2: die Übergabe des Namens der hochzuladenden Datei. Das scheint offensichlich nur über den Filepicker zu gehen und nicht einfach über ein Textfeld (falls ich mich irre, lasse ich mich gern korrigieren). Das heißt: nachdem mein VBA-Programm das Input-Feld gefunden hat, muss es erst mal drauf klicken, dann poppt ein Fenster mit dem aktuelle Verzeichnis auf. So weit funktioniert das auch. Nun sollte man meinen, dass SendKeys den Dateinamen auf die (aktive) Eingabezeile des File-Pickers schreibt - es passiert aber nicht. Muss ich vielleicht das Eingabefeld des aufgepoppten Fensters noch mal extra fokussieren?
Auszug aus meinem Code:
For Each itm In IE.Document.all
If itm.ID = "myinput" Then
itm.Focus
itm.Click
Sleep 2000
sendString "e:\myfile.ext"
Stop ' zum Testen
End If
If itm.ID = "mypass" Then
itm.Focus
sendString "mypassword"
End If
If itm.ID = "mysubmit" Then
itm.Focus
itm.Click
End If
Next
Sub sendString(s As String)
Dim i As Integer
For i = 1 To Len(s)
Application.SendKeys Mid$(s, i, 1), True
Sleep (100)
Next
End Sub
|