excel warten, bis die Webseite zu öffnen
Ich geschrieben habe einige VBA-Skript zum laden einer Webseite kopieren Sie den gesamten html-Inhalt in eine Zeichenfolge, und wählen Sie dann bestimmte Daten aus dieser Zeichenfolge. Im Grunde Suche ich für eine Bahn-Fahrplan, dann kopieren details für 5 Fahrten (Abfahrt, vertauscht, Reise-Zeit & Kosten)
Ich habe das obige Skript sortiert, eine Suche, aber ich möchte nun eine Schleife und fahren etwa 300 sucht. Das Problem, das ich gefunden habe ist, dass das Skript nicht warten, für die Webseite zu öffnen, und daher ist die zurückgegebene Zeichenfolge leer ist, effektiv, Rücksendung nichts.
Was ich tun müssen, ist, laden Sie eine Adresse ein, warten Sie, bis die Seite zu laden, dann weiter in das Skript. Haben Sie irgendwelche Vorschläge? Ich habe gesucht, viel und einfach nicht in der Lage zu Sortieren, habe ich versucht Application.Wait
in einer Reihe von Orten und immer noch kein Stück weiter.
Den code, den ich verwende, ist unter:
Sub CreateIE()
Dim tOLEobject As OLEobject
Dim NRADDRESS As String
NRADDRESS = Range("h11")
On Error Resume Next
Worksheets("Sheet1").Shapes.Range(Array("WebBrow")).Delete
Set tOLEobject = Worksheets("Sheet1").OLEObjects.Add(ClassType:="Shell.Explorer.2",Link:=False, _
DisplayAsIcon:=False, Left:=0, Top:=15, Width:=912, Height:=345)
For Each tOLEobject In Worksheets("Sheet1").OLEObjects
If tOLEobject.Name = "WebBrowser1" Then
With tOLEobject
.Left = 570
.Top = 1
.Width = 510
.Height = 400
.Name = "WebBrow"
End With
With tOLEobject.Object
.Silent = True
.MenuBar = False
.AddressBar = False
.Navigate NRADDRESS
End With
End If
Next tOLEobject
Sheets("Sheet2").Activate
Sheets("Sheet1").Activate
Call ReturnText
End Sub
NRADDRESS
ist eine web-Adresse aus einer Reihe von verschiedenen Parametern (origin, destination, Datum und Zeit)
Den "Call ReturnText" ist das Skript, das ich verwenden, kopieren Sie die website-HTML-Code in einem string extrahieren und was ich will.
Bitte versuchen Sie die Lösung oben verlinkten verwenden Sie die bereit-warten-Schleife in Verbindung mit der WinAPI
Sleep
Funktion. Sie sollten auch loszuwerden On Error Resume Next
diese Aussage allein wird Ihr code schwer zu Debuggen, da Fehler führen tendenziell zu mehr Fehlern...
InformationsquelleAutor user3533028 | 2014-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Fall könnten Sie versuchen, so etwas wie dieses:
die, glaube ich, benötigt einen Verweis auf Microsoft Internet Controls.
DoEvents
. Siehe here zum Beispiel.Vielen Dank für diese. Ich war auf der Suche auf etwas ähnlich wie gestern, aber konnte einfach nicht bekommen es funktioniert. Stripped zurück zu bare essentials, um die
Do While objIE.readyState <> 4 And objIE.Busy
Linie zu arbeiten und dann baute es wieder nach oben. Ich bin sehr neu hier!InformationsquelleAutor Michael Blaustein
Als ich begann, mit VBA zu laden, Webseiten, ich benutzte auch den IE-Objekt, aber später fanden es schafft alle Arten von Komplikationen, die ich nicht brauchen, wenn alles, was ich wirklich wollte, war die Datei herunterladen. Jetzt verwende ich immer URLDownloadToFile.
Ein gutes Beispiel, es ist zu verwenden, können hier gefunden werden:
VBA - URLDownloadToFile - Daten fehlen in der heruntergeladenen Datei
InformationsquelleAutor Michael Blaustein