首页 > 解决方案 > 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

我不确定是什么原因,我猜不透,但希望这里有人可以向我解释原因和解决方法。我从事研究工作,每天我都会搜索很多名字,如果我能知道哪些有结果,哪些没有,那将非常有帮助。

如果有人可以帮助代码返回确切的搜索次数(在页面底部找到的那个),那就更令人惊奇了。

此致!

标签: excelvbaruntime-errorruntime

解决方案


推荐阅读