2016-08-04 6 views
0

Ich schreibe ein Makro, um auf eine Webseite zuzugreifen, nachdem der Benutzer seine Login-ID/Passwort eingegeben hat. Ich habe Code hinzugefügt, um das Sub zu beenden, wenn eines dieser Felder leer ist - aber wie würde ich das Ereignis behandeln, dass die Anmeldung nicht funktioniert? Derzeit bringt es sie nur auf die Anmeldeseite der Website, aber ich würde lieber die Login-Code-Schleife haben, bis der Login funktioniert.VBA Handle Ereignisse mit Website-Login

Irgendwelche Möglichkeiten, dies zu tun? Ich bin nicht vertraut mit Internet Controls.

Der Login-Teil meines Code sieht wie folgt aus:

Set SupDOC = SupIE.document 
With SupDOC.forms(0) 
    .j_username.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Username/Email: ") 
    If .j_username.Value = "" Then 
     MsgBox "No Username was entered." 
     Exit Sub 
    End If 
    .j_password.Value = InputBox("To Login Dun & Bradstreet, Enter your D&B Password: ") 
    If .j_password.Value = "" Then 
     MsgBox "No Password was entered." 
     Exit Sub 
    End If 
    .submit 
End With 

EDIT:

die Login-Zeiten-out und nach korrekten Login-Informationen einreichen, die Website Manchmal leitet auf „Session out abgelaufen "und die Anmeldung erfordert erneut. Nach dem Anmelden wird die Site nicht auf die Seite geladen, die ich später angegeben habe. Irgendwelche Ideen, um das zu beheben?

Danke,

Antwort

0

Ich legte diese Schleifen nach der Anmeldung Einreichung und Navigation auf neue Website und löste alle Probleme mit der Umleitung. Dies ist abhängig von der Website, aber das geht um die "Sitzung abgelaufen" für mich.

Do While SupIE.Busy: DoEvents: Loop 
Do Until SupIE.readyState = READYSTATE_COMPLETE: DoEvents: Loop 
0

Nachdem Sie es einreichen, können Sie eine Schleife tun zu warten, die Readystate zurück bis 4 zu erhalten, dann überprüfen, ob die Felder nach oben leer ist, dann gehen und wieder versuchen, bis es funktioniert.

EDIT: URL als String definieren, wenn Sie umgeleitet werden, wird es zur Anmeldeseite navigieren.

+0

Was definiert ReadyState 4? (Ich wusste nicht, dass es verschiedene Fertigzustandszustände gibt). Führt diese Schleife auch, wenn eine ungültige Anmeldung eingegeben wurde? – AnthonyT

+0

Nur den Code getestet, egal was ich eintippe, es fragt das Meldungsfeld – AnthonyT

+0

IE hat 4 bereit Zustände, im Wesentlichen jeder von ihnen repräsentieren einen anderen Ladezustand der Seite, 1 wird überhaupt nicht geladen, 4 wird vollständig geladen und Du bist in der Lage zu interagieren und alles. https://msdn.microsoft.com/en-us/library/ms534361(v=vs.85).aspx – Alex