Thema Datum  Von Nutzer Rating
Antwort
Rot Formular zum Hochladen einer Datei per SendKeys steuern
30.12.2022 23:05:49 Paul Lenz
NotSolved
31.12.2022 09:27:06 Mase
NotSolved
31.12.2022 11:07:05 Paul Lenz
NotSolved
31.12.2022 11:21:52 Mase
NotSolved
31.12.2022 17:54:14 Paul Lenz
NotSolved

Ansicht des Beitrags:
Von:
Paul Lenz
Datum:
30.12.2022 23:05:49
Views:
47
Rating: Antwort:
  Ja
Thema:
Formular zum Hochladen einer Datei per SendKeys steuern

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Formular zum Hochladen einer Datei per SendKeys steuern
30.12.2022 23:05:49 Paul Lenz
NotSolved
31.12.2022 09:27:06 Mase
NotSolved
31.12.2022 11:07:05 Paul Lenz
NotSolved
31.12.2022 11:21:52 Mase
NotSolved
31.12.2022 17:54:14 Paul Lenz
NotSolved