Ich bin wie dies zB in Excel VBA zu automatisieren, teilRespond to Website Message Box von mit VBA automatisieren Internetexplorer
Set ie = CreateObject("InternetExplorer.Application")
With ie
.navigate "http://www.statspass.com/login.asp"
Do While .Busy: DoEvents: Loop
Do While .readyState <> 4: DoEvents: Loop
With .document.forms(0)
.txtUsername.Value = "username"
.txtPassword.Value = "*****"
.submit
End With
später im Code, navigiere ich auf eine andere URL und einige Daten bekommen. Das alles hat gestern gut funktioniert. Heute, wenn die Zeile "Senden" angezeigt wird, zeigt die Website ein Meldungsfeld mit der Meldung "Eine andere Sitzung wird abgemeldet" an. Ich setze ie.Visible = True und gehe durch den Code, um das herauszufinden. Wie geschrieben, wird das Meldungsfeld nicht angezeigt. Wenn das Meldungsfeld angezeigt wird, sitzt es auf der Seite und die .Busy (nicht oben gezeigt) ist immer wahr, so dass der Code nur dort in einer Schleife sitzt.
Wenn ie.Visible = False ist, gibt es kein Meldungsfeld (wie ich erwarten würde), der Code wird nicht gehalten, aber beim nächsten Navigate-Methodenaufruf landet er wieder auf der Anmeldeseite (weil es ist noch nicht richtig angemeldet) und bekomme eine Fehlermeldung, wenn ich auf bestimmte Tabellen zugreifen möchte, die auf dem Anmeldebildschirm nicht vorhanden sind.
Ich muss mich auf dieser Website anmelden, zu einer bestimmten Seite navigieren und Informationen aus einer Tabelle abrufen. Basierend darauf, wo sich mein Code gerade befindet, möchte ich herausfinden, wie man OK zu diesem Nachrichtenfeld sagt, wenn und wenn es existiert. Aber wenn ich zurücktreten und alternative Methoden in Betracht ziehen muss, bin ich nicht abgeneigt.
Weniger wichtig, aber immer noch nervt mich, warum hat dieser Code gestern funktioniert? Ich habe es getestet, es an einen Kunden geschickt, der diese Fehler gemeldet hat, und heute bekomme ich die Fehler.