【发布时间】:2016-11-12 01:25:20
【问题描述】:
我尝试了许多教程,并在堆栈溢出上花费了大量时间来尝试解决此问题,但始终找不到答案。
我是使用 excel 的 VBA 新手,一直在尝试在 excel 中进行自动网络搜索,该搜索从一列单元格中获取查询并将结果中的一个元素写入另一行单元格。为了使这个示例简单,我使用了 Google 搜索。
我总是得到相同的信息:
运行时错误'91'对象变量或未设置块变量
这是最新版本的代码:
Sub Macro1()
Dim ie As Object
Set Rng = Range("A3:A5")
Set Row = Range(Rng.Offset(1, 0), Rng.Offset(1, 0).End(xlDown))
Set ie = CreateObject("InternetExplorer.Application")
With ie
.Visible = True
For Each Row In Rng
.navigate "https://www.google.com/#q=" & Range("A" & Row.Row).Value
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Dim doc As HTMLDocument
Set doc = ie.document
While ie.readyState <> 4
Wend
Range("B" & Row.Row) = doc.getElementById("resultStats" & Range("A" & Row.Row).Value).innerText
Next Row
ie.Quit
End With
End Sub
非常感谢任何帮助。
谢谢,
【问题讨论】:
-
看起来像
doc.getElementById("resultStats" & Range("A" & Row.Row).Value)或Range("A" & Row.Row)可能评估为Null。您能否确认Range("A" & Row.Row)实际上返回了一个非空值,并且您的 HTML 文档中有一个元素实际上名为“resultStatsA”? -
如何使用适当的缩进,这样您就可以看到哪些代码行打开了一个块,哪些关闭了它?这将使您的代码更易于阅读和排除故障。
标签: excel getelementbyid vba