excel等网页打开

我已经写了一些VBA脚本来加载网页,然后将整个HTML内容复制到一个string,然后从该string中select特定的数据。 本质上,我search一个铁路时刻表,然后复制5个旅程的细节(出发时间,交换,旅程时间和成本)

我有上面的脚本sorting做一个search,但我现在想循环它,并运行约300search。 我发现的问题是脚本不会等待网页打开,因此返回的string是空的,实际上什么都不返回。

我需要做的是加载一个地址,等待页面加载,然后继续脚本。 你有什么build议吗? 我search了很多,只是没有能够sorting,我已经尝试了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是由许多不同参数组成的url(来源,目的地,date和时间)

“Call ReturnText”是我用来将网站HTML复制到一个string并提取我想要的脚本。

在这种情况下,你可能会尝试这样的事情:

 Set objIE = CreateObject("InternetExplorer.Application") objIE.navigate strURL Do While objIE.readyState <> 4 And objIE.Busy DoEvents Loop 

我相信,这需要参考Microsoft Internet控制。

当我第一次开始使用VBA加载网页时,我也使用了IE对象,但后来发现它造成了我不需要的各种复杂情况,当我真正想要的是下载文件。 现在我总是使用URLDownloadToFile。

它的一个很好的例子可以在这里find:

VBA – URLDownloadToFile – 下载的文件中缺less数据