Рабочий код VBA неожиданно выдает ошибку времени выполнения 91 - связано с XMLHTTP - PullRequest
0 голосов
/ 20 сентября 2019

РЕДАКТИРОВАТЬ: Я проверил текст ответа и выяснил, что причина ошибки заключается в том, что запрос перенаправляется на страницу "Я не робот" из-за большого количества поисковых запросовотправлено 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

Я не уверен, в чем причина, яУ меня есть несколько догадок, но я надеюсь, что кто-то здесь сможет объяснить мне причину и обходной путь.Я занимаюсь исследованиями, и каждый день я ищу много имен, и было бы очень полезно, если бы я мог знать, какие результаты есть, а какие нет.

Было бы еще более удивительно, если бы кто-то мог помочь с кодомчтобы вернуть точное количество поисков (найденное внизу страницы).

С наилучшими пожеланиями!

...