Mit FTP wäre das kein Problem, aber hier handelt es sich um FTPS. Dazu gehört, Signaturen zu benutzen etc... und damit scheint VBA überfordert zu sein.
Aber egal, ich habe jetzt einen funktionierenden Workaround. SendKeys funktioniert sehr gut, wenn man es langsam genug macht.
Es scheint verkehrt zu sein, den FilePicker zu aktivieren, indem man auf das Eingabefeld klickt. itm.click() aktiviert zwar den FilePicker, scheint aber dann auf irgend etwas zu warten, und das Programm läuft erst dann weiter, wenn man den FilePicker manuell wieder geschlossen hat.
Dies funktioniert: mit GetWindowRect() die Position des Fensters und damit die Position des Eingabefeldes ermitteln, mit SetCursorPos() die Maus drauf setzen und mit mouse_event() ein "Mousedown" und "Mouseup" senden. Wenn dann der FilePicker erscheint, kann man erwartungsgemäß die gewünschte Datei über SendKeys in das Feld für den Dateinamen schreiben. Dann noch zweimal {TAB} und einmal {ENTER} - geschafft.
Was das Passwort betrifft, hast du recht, ich sollte es vielleicht noch verschlüsseln. Es handelt sich aber um ein ganz spezielles Passwort nur für diesen einen Zweck, und außerdem wird die hochgeladene Datei nur dann gespeichert, wenn sie den korrekten Namen hat, und ausführbar ist sie sowieso nicht.
|