Microsoft Excel

Herbers Excel/VBA-Archiv

WebLogin mit Dateiöffnen

Betrifft: WebLogin mit Dateiöffnen von: Peter
Geschrieben am: 02.11.2020 07:42:53

Hallo Forum


Ich habe folgendes Problem:

Ich will mich per Macro auf einer Webseite einloggen und dann csv Dateien downloaden, öffnen und in mein Macro importieren.


Ich hab mal mit einem "InternetExplorer.Application" gemacht.

Login - Funktioniert

dann kammen 3 oder 4 redirekt -- hab ich im Griff


Links der Dateien auslesen - Funktioniert


Habe auch den Download schon geschaft mit

"Ie.navigate + Wartezeit + Alt+S + Wartezeit "

Dann hole ich mir den Downloadpfad vom InternetExplorer aus der Registry und kopiere mir sie um

Jetzt erst kann ich sie öffnen

Denk mir aber das müsste einfacher gehen !


Hoffe auf vorschläge eurer Seite !

Betrifft: AW: WebLogin mit Dateiöffnen
von: Zwenn
Geschrieben am: 02.11.2020 12:05:55

Hallo Peter,

wenn sich der Download nicht über urlmon() durchführen lässt, weil die csv-Dateien erst durch die Anfrage von der Webseite (anklicken der Downloadlinks) auf dem Web-Server generiert werden, sehe ich da wenig Spielraum.

Du kannst versuchen das Ganze über xhr (XML HTTP Request) durchzuführen. Für den Login kannst Du die Crdentials mitgeben. Die Donloadlinks müsstest Du auslesen können, sofern es mit den redirects keine Probleme gibt. Was genau verstehst Du darunter, bzw. was passiert da? xhr kann "nur" statische Seiten holen. Keine Verarbeitung von clientseitigen Scripten und kein (automatisches) Geplänkel mit dem Server.

Was ich noch nie ausprobiert habe, ist das Senden eines Downloadlinks zum Generieren einer Datei auf einem Server und das Anschließende Runterladen der Datei über urlmon(). Da wird aber in den meisten Fällen vermutlich mindestens eine ID zur Verifizierung benötigt. Evtl. auch Cookies oder noch weiteres Gedöns. Das macht der IE alles automatisch im Hintergrund für Dich. So veraltet die Diva auch sein mag, für solche Sachen ist die Nutzung noch immer sehr bequem, sofern die Seite noch mindestens mit den benötigten Funktionalitäten im IE läuft.

Den Pfad vom IE musst Du nicht zwingend aus der Reg auslesen. Sofern in den Einstellungen des IE kein Downloadpfad gesetzt wurde, wird der Standard Downloadpfad verwendet. Also der Systemordner Downloads. Sofern ein Pfad gesetzt ist, steht dieser (auch) in der Reg. Soll Dein Makro auf mehreren Rechnern laufen, auf denen Du die Situation nicht überblicken kannst, ist das Auslesen aus der Reg eine sinnvolle Sache. Auf einem Rechner reicht es, wenn Du den Pfad einfach kennst und im Makro verwendest.

Wozu ich leider gar nix sagen kann, ist die Verwendung von Selenium mit einem Webdriver Deiner Wahl. Ich glaube da geht auch eine Menge einfacher und stabiler als mit dem IE direkt über COM, habe mich damit aber bisher noch nicht beschäftigt.

Viele Grüße,

Zwenn

Betrifft: AW: WebLogin mit Dateiöffnen
von: Peter
Geschrieben am: 02.11.2020 15:37:04

Hallo,
Der Downloadlink auf der Seite ist sofort verfügbar !
Aber eben an den Login und die Session(Cookie) geknüpft.

Under Redirekt versteh ich, eine Weiterleitung mit Click auf Login Taste. Da Hüpft er irgendwie 2-3 mal,

UrlMon() Hab ich schon gesehen. aber wie verknüpfe ich das mit meinem Login ?(Session,Cookie)

xml Http Request schau ich mir mal an.

Nochmal der Login: in code Form
Adresse = "http://10.100.200.31/"
'Explorer auf seite öfnen
Set Ie = CreateObject("InternetExplorer.Application")
Ie.Visible = True
Ie.navigate Adresse & "StorageCardSD/Logs?UP=TRUE&FORCEBROWSE"

Do: Loop Until Ie.Busy = False

On Error GoTo Eingeloggt
Ie.document.forms(0).elements("Login").Value = "Administrator"
Ie.document.forms(0).elements("Password").Value = "4311"
Ie.document.forms(0).submit
Eingeloggt:
'Mehrere Fensterwechsel
Do: Loop Until Ie.Busy = False
Do: Loop Until Ie.Busy = False
Do: Loop Until Ie.Busy = False
Do: Loop Until Ie.Busy = False

Der Download mach ich dann so

Ie.navigate Adresse & Dateipfad
Application.Wait (Now + TimeValue("0:00:02"))
'Alt S - Save File
Application.SendKeys "%S", True
Application.Wait (Now + TimeValue("0:00:04"))

wie gesagt das gefällt mir nicht.

Betrifft: AW: WebLogin mit Dateiöffnen
von: Zwenn
Geschrieben am: 02.11.2020 16:31:26

Hallo Peter,

das ist eine Intranetseite nehme ich an. Da kannst Du eigentlich nur "rumprobieren". Hier ist ein Link für den Einstieg zur Verwendung von Credentials. Damit sollten sich die Redirects eigentlich direkt erledigen.
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials

Wenn Du mit einem Cookie arbeiten musst, musst Du mal googeln oder z.B. StackOverflow als Infoquelle verwenden. Da bin ich auch noch nicht so weit das anzuwenden.

Es ist mir in einem bisherigen Versuch bisher nicht gelungen urlmon() zu verwenden, nachdem ich die Seite mit dem IE aufgerufen hatte. Da war die Lösung dann auch mit Sendkeys() zu arbeiten, was ich auch als unbefriedigend empfinde.

Viele Grüße,

Zwenn

Betrifft: AW: WebLogin mit Dateiöffnen
von: Peter
Geschrieben am: 02.11.2020 19:10:04

Danke Zenn für die Tipps ! Werde sie mal berücksichtigen.



Intranet jain ..... Webinterface eines Simatic Siemens Panel !

Siemens lässt den zugriff auf die gesteckte Speicherkarte nur über WEbinterface zu. Netzlaufwerk wäre auch möglich, ist aber nicht gewünscht.

Betrifft: AW: WebLogin mit Dateiöffnen
von: Peter
Geschrieben am: 03.11.2020 09:57:20

Hallo,

Also mit HTTPRequest komm ich irgendwie gar nicht ins laufen

Hier noch mal der HTML Code wo der Login drin is

https://www.herber.de/bbs/user/141266.txt