Clever-Excel-Forum

Normale Version: Excel behandelt Login für Datenimport unterschiedlich?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Von einer Internetseite, die hinter einem Loginprozess liegt, möchte ich gerne die Elemente runterladen. Über Daten -> Aus dem Web -> Im Browserfenster einloggen -> Importieren  ; funktioniert dies auch schon.

Starte ich Excel neu und Refreshe die Verbindung, kommt ein (externes) NTLM Fenster wo ich die Logindaten eintragen kann und dies wird auch von Excel akzeptiert.

Nun möchte ich aber den Prozess automatisieren und die Logindaten speichern, es sind aber verschiedene Probleme aufgetaucht:

Zuerst habe ich versucht das NTLM Fenster anzusprechen. Hier kann man die Logindaten direkt gespeichert lassen, man müsste also nur noch "OK" klicken. Leider habe ich keinerlei Material dazu gefunden, wie ich z.B. mit VBS dieses Fenster ansteuern kann.
Habe dann über VBS und Sendkeys "Enter" versucht das ganze zu regeln, habe dann aber irgendwann bemerkt, dass das VBS nicht mehr weiter ausgeführt wird wenn das NTML Fenster aufpoppt. Heißt wenn ich es schließe, erfolgt erst "Enter".

So weit so gut dacht ich mir, Datenimporte von Seiten mit Loginprozess wird es auch bei anderen Menschen geben und bin auch sehr fündig geworden. Password, Name etc wird übergeben und auch das Submit funktioniert, es erfolgter also ein Login auf dieser Seite.

Leider händelt Excel aber scheinbar Browser auf 2 Arten, es gibt einmal den Internen Excel Browser, den man über Daten -> Aus dem Web etc. bedienen kann und von dem sich Excel auch den Login merkt.


Erstelle ich aber z.b. über VBA eine InternetExplorer Instanz und lass mich hier auch über VBA einloggen, so hat das keine Auswirkungen auf die bestehenden Verbindungen in Excel und er fragt weiterhin nach einem Login, möchte man diese bestehenden Verbindungen z.B. refreshen.

Quasi so als würde sich Excel diese Cookies nur merken, wenn er den internen browser benutzt, den man aber nur über "aus dem Web" starten kann.


Daher in Kurzform:
Kann ich ein durch Excel aufgerufenes NTLM Fenster irgendwie ansprechen? Durch Excel selbst? VBS?

Gibt es eine Möglichkeit Daten einer Logingesicherten Seite durch Excel abzugreifen, ohne diese jedes mal über "Daten->Aus dem Web" zu importieren oder das NTLM Fenster zu nutzen??


Code:
Sub Beispiel()

   'dimension (declare or set aside memory for) our variables
   Dim objIE As InternetExplorer 'special object variable representing the IE browser
   Dim aEle As HTMLLinkElement 'special object variable for an <a> (link) element
   Dim y As Integer 'integer variable we'll use as a counter
   Dim result As String 'string variable that will hold our result link

   'initiating a new instance of Internet Explorer and asigning it to objIE
   Set objIE = New InternetExplorer

   'make IE browser visible (False would allow IE to run in the background)
   objIE.Visible = True

   'navigate IE to this web page (a pretty neat search engine really)
   objIE.navigate "beispielURS"

   'wait here a few seconds while the browser is busy
   Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop

   'in the search box put cell "A2" value, the word "in" and cell "C1" value
   objIE.document.getElementById("uname").Value = "BeispielUser"
     
         'in the search box put cell "A2" value, the word "in" and cell "C1" value
   objIE.document.getElementById("pwd").Value = "BeispielPasswort"


With objIE
    .document.forms(0).submit
   End With

end sub
Kurze Zusammenfassung für Alle, die auch mal vor dem selben Problem stehen werden:


Es ist nicht möglich, Daten einer Login-geschützten Seite automatisch mit Excel runterzuladen. Es ist immer zumindest 1 mal Enter drücken nötig.


Probiert wurde:
Gespeicherter Query zum Download einer DOM-Struktur innerhalb des Logingeschützten Bereiches, damit Excel seine internen Cookies für den Login korrekt am Start hat und der XML Import funktioniert -> Leider nicht ausführbar, da ein Windows Authentifizierungsfenster (NTLM) sich beim Starten des DOM-Querys öffnet. Sehr komfortabel wenn ein User das Sheet nutzen soll, da er seine Logindaten beim starten des Querys eingeben kann, leider für eine automatisierung tödlich. Hier kann man die Logindaten sogar speichern, aber selbst mit Sendkeys etc. leider nicht Akzeptieren/Enter anwählen.

Starten des Internet Explorers (extern) über VBA, eintragen der Logindaten in die benötigten Felder, navigieren zur XML Schnittstelle, runterladen der XML mit IE integrierten Downloader (quasi Rechtsklick -> Speichern unter). Leider nicht möglich, da VBA auf den Speicherdialog keinen Zugriff hat (und Sendkeys auch nicht) und spätestens hier jemand wieder manuell Enter klicken muss.
Auch ein Referenzieren auf "UIAutomationCore.dll" und erweiterte Funktionen hierdurch hat nicht funktioniert.


Auf verschiedenste Weise wurde versucht die Seite per XML Import, HTTPrequest etc. aufzurufen und zu händeln, hat aber immer zu Problemen geführt.

Ich versuche jetzt mal die XML Datei mit Wget oder sonst was zu erhalten. Schön wäre, wenn es irgendeine Kommunikationsschnittstelle zwischen wget und excel/vba/vb gibt, damit Excel weiß wann es eine neue XML Datei zum auswerten gibt.

/thread

Liebe Grüße