excel - VBA 工作代码突然给出运行时错误 91 - 与 XMLHTTP 相关
问题描述
编辑: 我测试了响应文本,发现错误背后的原因是由于 excel 发送的大量搜索请求,请求被重定向到“我不是机器人”页面。有什么办法可以防止这种情况发生吗?
原文: 我有这段代码(在网上找到并修改过),当我执行几次时它工作正常,然后它创建
运行时错误“91 - 对象变量或未设置块变量”
然后在我等待大约一个小时后,它可以正常工作而无需我进行任何更改,然后它再次产生错误。等等...
该代码最初是为了在 Google 上搜索字符串列表并返回多少个结果。我修改它来搜索确切的字符串,如果有结果就返回。
这是代码:
Sub SearchHits()
Dim url, name As String
Dim i, lastRow As Long
Dim XMLHTTP As Object
Dim html As Object
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
lastRow = Range("a" & Rows.Count).End(xlUp).Row
For i = 1 To lastRow
Name = """" & Cells(i, 1).Value & """"
url = "https://www.google.co.in/search?q=" & Name & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)
Set XMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
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
If html.getElementById("topstuff").innerText <> "" Then '<-----Highlighted on error
Cells(i, 9) = "–"
Else
Cells(i, 9) = "Results Found"
End If
Next
End Sub
我不确定是什么原因,我猜不透,但希望这里有人可以向我解释原因和解决方法。我从事研究工作,每天我都会搜索很多名字,如果我能知道哪些有结果,哪些没有,那将非常有帮助。
如果有人可以帮助代码返回确切的搜索次数(在页面底部找到的那个),那就更令人惊奇了。
此致!
解决方案
推荐阅读
- node.js - NRWL NX - 为什么我在运行“ng serve express”时得到“找不到名称‘describe’”?
- constraint-programming - 载客量受限的载客车辆路线问题
- xslt - XSL 不会写 xmlns:xsl?
- javascript - chartjs:需要 yAxis 比例附近的彩条
- c++ - c ++将模板化函数应用于元组的每个元素
- javascript - 使用 django REST 和 Vue.js 传播不可迭代实例的无效尝试
- ruby-on-rails - 配置异常在生产模式下启动 Web 应用程序 Ruby
- optimization - 在c中具有多重撤消/重做的文本编辑器
- batch-file - 批处理作业删除带有日期和时间戳的文件名中的时间戳
- devops - Artifactory REST API 调用以检索多个工件的最新工件版本