23.01.2017, 17:04
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??
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