2016-08-01 9 views
0

Mein Hauptziel ist es, sich auf einer Website einzuloggen und einen bestimmten Link auf dieser Seite herunterzuladen - alles über ein VBA-Makro.Login Zugriff über VBA-Makro auf Website mit eingeschränktem Quellcode

jedoch mit dieser speziellen Website, kann ich nicht einmal den Quellcode der Seite sehen an dem Benutzername/Passwort Variablen zu suchen, wie hier empfohlen wurde: http://www.exceltrainingvideos.com/how-to-login-automatically-into-website-using-excel-vba/

Dies ist, was die Webseite wie folgt aussieht: enter image description here

Ich bin nicht in der Lage, den Quellcode anzuzeigen, denn wie Sie sehen können, sehe ich nichts zurück vom Server, bis authentifiziert.

Ich habe Funktionscode, um den Browser zu öffnen. Einfach nicht einloggen.

Sub OpenInFireFoxNewTab(url As String) 
    Dim pathFireFox As String 
    ' 
    pathFireFox = "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" 
    If Dir(pathFireFox) = "" Then pathFireFox = "C:\Program Files\Mozilla Firefox\firefox.exe" 
    If Dir(pathFireFox) = "" Then 
    MsgBox "FireFox Path Not Found", vbCritical, "Macro Ending" 
    Exit Sub 
    End If 
    Shell """" & pathFireFox & """" & " -new-tab " & url, vbHide 

    ' use sendKeys to send an enter acceptance 
    Application.SendKeys "~", True 
End Sub 

ich Mozilla bin mit, weil unser Server muß nicht ein https Sicherheitszertifikat haben (die auf IE kam), so Mozilla eine Arbeit um war.

Wie kann ich mich noch mit VBA anmelden?

EDIT: Es öffnet die Seite, fragt Sie möchten Login bestätigen (fordert zur Bestätigung auf OK), aber sendet nie den OK-Befehl. Ich versuche derzeit zu debuggen und mich mit diesem VBA-Debugger vertraut zu machen.

EDIT # 2: sendkeys so geändert, dass nur ein "~" ohne Variable gesendet wird. Jetzt bewegt es sich in der Excel-Tabelle um eine Zeile nach unten, anstatt die Eingabetaste im Mozilla-Fenster zu drücken.

+0

ich wirklich vorschlagen zögern [ 'SendKeys'] (https://msdn.microsoft.com/en-us/library/office/gg278655.aspx), aber wenn Sie garantieren können, dass der Benutzer die Tastatur nicht berührt, könnten Sie vielleicht einfach 'SendKeys' verwenden, um' ALT + TAB' zu senden, dann den Benutzernamen, dann 'TAB', dann' Passwort', und geben Sie dann ein? – BruceWayne

+0

Und das wird vor Ort eingegeben? Auch warum ALT + TAB? –

+0

'SendKeys' reproduziert im Wesentlichen Tastenanschläge. Das Ausführen eines Makros erfolgt in Excel - Sie müssten das Browserfenster also wahrscheinlich mit Alt-TAB fokussieren. Wenn es nicht das "zweite" offene Programm ist, müssen Sie dann vielleicht den Browser direkt aufrufen. – BruceWayne

Antwort

0

versuchen so etwas wie dieses

processId = Shell("""" & pathFireFox & """" & " -new-tab " & url, vbHide) 
AppActivate processId 

Application.SendKeys "~", True 


aktualisieren

Moderne Browser mehrere Prozesse verwenden, also war ich wohl ein wenig naiv zu denken, dass die Registerkarte Prozess-ID gleich der Start wäre firefox Prozess ID.
AppActivate funktioniert auch mit einem Teil des Fenstertitels so zum Beispiel

Shell """" & pathFireFox & """" & " -new-instance " & url 
Application.Wait(Now + #0:00:05#) ' wait few seconds for the page to load ? 
AppActivate "Au" ' example if the window title is "Authentication Required" 
Application.SendKeys "~", True 

Selen für Browser Automatisierung beliebt ist, und sie haben Selenium IDE Firefox-Erweiterung, die Ihre Aktionen sie aufnehmen können, um Code und konvertieren. Überraschenderweise unterstützen sie VBA zu:

http://www.makeuseof.com/tag/how-to-automate-firefox-or-chrome-with-vba-and-selenium/ https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-vbavbs-formatt/

+0

Es antwortet mit "Laufzeitfehler '5': Ungültiger Prozeduraufruf oder Argument". Es schlägt bei AppActivate fehl. Wenn Sie jedoch MSDN für diesen Aufruf betrachten, scheint es keine Bibliothek zu geben, die ich importieren muss. –

+0

Ich hatte gehofft, dass es die von der Shell-Funktion zurückgegebene Prozess-ID akzeptieren würde. Sie können 'AppActivate" Authentication Required "' (oder 'AppActivate" Connectin ... "'?) Versuchen oder entfernen Sie die ', vbHide' – Slai

+0

scheint in dem Beispiel zu funktionieren https://msdn.microsoft.com/en- us/library/dyz95fhy # Anchor_3 aber mit 'AppWinStyle.NormalFocus' – Slai