使用Excel VBAparsingHTML

嗨StackOverflow社区!

在我去最近的加油站买了一加仑的汽油,然后去购物中心(一路上擦着绝望的泪水)把我自己放火了…

我正在尝试parsing几个网站,每个网站都是一个finance.google.co.uk的实例。 这个子只打开了3个站点(现在我计划有几百个),从每个站点拿出股价,分别放在A1,A2,A3单元格中。 我写的代码只有在启动/重新启动我的笔记本电脑并第一次运行excel后才能正常工作。 第二次和以后的运行会产生随机的结果,这意味着第二次运行会给我说A1和A3的值,下一个A1,下一个A1和A2等。最近几天花了一些时间来弄清楚发生了什么事情。 此外,我不能find一种方法来摆脱“在错误恢复下一行”行。 如果我这样做,我得到“方法导航”的对象“IWebBrowser2”失败“的错误,任何想法为什么? 顺便说一下,我是绿色的,代码为个人使用,或试图。 所以也许我忽略了一些简单的事情,或者我认为是这样的事情,根本就不知道那么简单的事情。

齿轮:
– windows7 32bit
– IE 11

我的分:

Sub Google_Finance() Dim o(3) As String o(1) = "http://finance.google.co.uk/finance?q=LON%3ABARC" o(2) = "http://finance.google.co.uk/finance?q=LON%3ACCH" o(3) = "http://finance.google.co.uk/finance?q=LON%3ASUK2" Dim IE As Object Set IE = New InternetExplorer IE.Visible = False For i = 1 To 3 IE.navigate o(i) On Error Resume Next Do While IE.Busy DoEvents Loop Next i Dim n as Integer n = 1 Dim v(3) As Variant v(1) = IE.document.getElementById("ref_11248216_l").innerText" v(2) = IE.document.getElementById("ref_243113080920948_l").innerText v(3) = IE.document.getElementById("ref_14572000_l").innerText For i = 1 To 3 Sheet1.Range("a" & n) = v(i) n = n + 1 Next i IE.Quit Set IE = Nothing End Sub 

干杯,

山姆

我试着在我身边运行代码。 删除“错误”时,我不会收到错误消息。 代码可以连续几次工作,没有问题发生。

对我来说,它看起来像这样:当IE试图访问页面时,你正在得到的错误正在发生。 由于您使用“错误继续下一个”,编译器不会尝试在失败时重新运行此任务,因此任何错误都不会导致它尝试从Web读取的值的数据。

您应该:a)删除“错误继续下一个”或b)更改error handling循环任务,直到完成。

对于解决schemea)你需要克服你的错误,我相信这里解释

对于解决schemeb),您将需要更改您的子包括循环 – 示例解决scheme可以在这里find

希望这可以帮助!