2016-07-18 6 views
0

Das Problem, das ich habe, ist ziemlich einfach. Ich öffne eine Webseite und suche nach dem Eingabefeld, in das ich einen Text eintippe und dann auf die Schaltfläche Suchen klicke. Sobald die neue Webseite hochgeladen ist, sammle ich alle Informationen, die ich brauche. Mein Problem ist die Zeit, die ich damit verbracht habe, die Webseite hochzuladen. Mein Sammelcode funktioniert nicht, da die neue Webseite noch nicht geladen ist. Ich habe den folgenden Code für das warten:IE Automatisierung durch Excel vba

Do While ie.ReadyState <> READYSTATE_COMPLETE 
      DoEvents 
Loop 

wo dh wie diese

Set ie = New InternetExplorer 

gesetzt wurde Gibt es einen anderen Code mit Ausnahme der application.wait, die ich verwenden kann, um dieses Problem beheben?

Antwort

0

Ich habe ähnliche Probleme bei dem Versuch, dasselbe zu finden. Das Problem ist, dass der Bereitschaftsstatus des IE-Objekts nicht immer vertrauenswürdig ist oder zumindest nicht signalisiert, was Sie denken. Zum Beispiel wird es Sie wissen lassen, wenn jedes Bild bereit ist, nicht die ganze Seite. Wenn Sie also das Webbrowser-Steuerelement nicht sehen müssen und Sie nur Daten senden und empfangen möchten. Mein Vorschlag ist, die Seite nicht in einem Webbrowser-Objekt zu zerlegen, sondern nur Daten mit einer WinHttpRequest zu senden und zu empfangen.

Tools> Referenzen> Microsoft WinHTTP Dienstleistungen

diese verwenden, können Sie die HTML-Daten direkt senden und empfangen. Wenn Ihre Seite URL-Parameter verwendet, senden Sie ein "GET" und analysieren Sie die Antwort. Andernfalls müssen Sie einen "PUT" senden und den bearbeiteten HTML-Code senden (Nehmen Sie grundsätzlich die leere Formularseite, mit der Sie beginnen, und legen Sie alle Werte fest). Bei der ersten Verwendung kann es ein wenig schwierig sein, die Formatierung je nach der Komplexität der Seite, die Sie zu automatisieren versuchen, zu korrigieren. Suchen Sie sich ein gutes Web-Debugging-Tool (z. B. Fiddler), damit Sie sehen, dass HTML an Ihre Zielseite gesendet wird.