我编写了一些 VBA 脚本来加载网页,然后将整个 html 内容复制到一个字符串中,然后从该字符串中选择特定数据。本质上,我搜索铁路时刻表,然后复制 5 次旅程的详细信息(出发时间、换乘、旅程时间和成本)
我已对上述脚本进行排序以进行一次搜索,但我现在想循环它并运行大约 300 次搜索。我发现的问题是脚本不会等待网页打开,因此返回的字符串为空,实际上什么也不返回。
我需要做的是加载一个地址,等待页面加载,然后继续脚本。你有什么建议吗?我搜索了很多,只是无法排序,我试过Application.Wait
在许多地方,仍然没有进一步的进展。
我正在使用的代码如下:
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
是由多个不同参数(起点、目的地、日期和时间)组成的网址“Call ReturnText”是我用来将网站 HTML 复制到字符串中并提取我想要的内容的脚本。
最佳答案
在这种情况下,您可以尝试这样的事情:
Set objIE = CreateObject("InternetExplorer.Application")
objIE.navigate strURL
Do While objIE.readyState <> 4 And objIE.Busy
DoEvents
Loop
我认为,这需要引用 Microsoft Internet Controls。
关于excel等待网页打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631621/