【发布时间】:2020-06-24 10:35:42
【问题描述】:
我有一个包含大约 25,000 个公司关键字的 Excel 工作簿,我想从中获取公司网站 URL。
我希望运行一个 VBA 脚本,它可以将这些关键字作为 Google 搜索运行,并将第一个结果的 URL 提取到电子表格中。
我找到了similar thread。
这样的结果是一败涂地;一些关键字在下一列中返回 URL,其他关键字保持空白。
它似乎还拉取了第一个搜索结果中谷歌优化子链接的 URL,而不是主网站 URL:Google Search Result example
然后我在包含 1,000 个关键字的示例列表中找到了以下代码 here。此博客的作者规定此代码适用于 Mozilla Firefox。
我测试了他也编写的 IE 代码,但这并没有达到相同的结果(它添加了由搜索结果中的描述性文本组成的超链接,而不是原始 URL)。
Firefox 代码一直工作到第 714 行,然后返回错误消息
“运行时错误 91:对象变量或未设置块变量”
Sub GoogleURL ()
Dim url As String, lastRow As Long
Dim XMLHTTP As Object
Dim html As Object
Dim objResultDiv As Object
Dim objH As Object
lastRow = Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
url = “https://www.google.co.uk/search?q=” & Cells(i, 1) & “&rnd=” & WorksheetFunction.RandBetween(1, 10000)
Set XMLHTTP = CreateObject(“MSXML2.serverXMLHTTP”)
XMLHTTP.Open “GET”, url, False
XMLHTTP.setRequestHeader “Content-Type”, “text/xml”
XMLHTTP.setRequestHeader “User-Agent”, “Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0”
XMLHTTP.send
Set html = CreateObject(“htmlfile”)
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid(“rso”)
Set objH = objResultDiv.getelementsbytagname(“h3”)(0)
Cells(i, 2).Value = objH.innerText
Set html = CreateObject(“htmlfile”)
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid(“rso”)
Set objH = objResultDiv.getelementsbytagname(“cite”)(0)
Cells(i, 3).Value = objH.innerText
DoEvents
Next
End Sub
【问题讨论】:
-
这个错误是否有可能源于 Firefox 限制宏能够运行的搜索次数?
-
如果您认为我的建议可以作为这个问题的答案,那么我建议您接受它作为答案。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。
标签: html excel vba internet-explorer firefox