【发布时间】:2016-04-28 14:28:57
【问题描述】:
我有大约 12,000 行数据需要网站来处理。此 VBA 代码运行良好约 800,然后停止。由于这个错误,现在我无法让它再次运行。我不知道如何让它再次运行。
运行时错误“91”对象变量或未设置块变量
Sub XMLHTTP()
Dim url As String, lastRow As Long
Dim XMLHTTP As Object, html As Object, objResultDiv As Object, objH3 As Object, link As Object
Dim start_time As Date
Dim end_time As Date
lastRow = Range("A" & Rows.Count).End(xlUp).Row
Dim cookie As String
Dim result_cookie As String
start_time = Time
Debug.Print "start_time:" & start_time
For i = 2 To lastRow
url = "https://www.google.co.in/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 objH3 = objResultDiv.getelementsbytagname("H3")(0)
Set link = objH3.getelementsbytagname("a")(0)
str_text = Replace(link.innerHTML, "<EM>", "")
str_text = Replace(str_text, "</EM>", "")
Cells(i, 2) = str_text
Cells(i, 3) = link.href
DoEvents
Next
end_time = Time
Debug.Print "end_time:" & end_time
Debug.Print "done" & "Time taken : " & DateDiff("n", start_time, end_time)
MsgBox "done" & "Time taken : " & DateDiff("n", start_time, end_time)
End Sub
【问题讨论】:
-
url = "https://www.google.co.in/search?q=" & Cells(i, 1) & "&rnd=" & WorksheetFunction.RandBetween(1, 10000)你在破解网站吗? -
我不确定你所说的“破解网站”是什么意思我应该提到我从这个页面找到了这段代码:stackoverflow.com/questions/17495644/…
-
您在 google 上搜索随机页面 (RandBetween) 12k 次。这是饼干做的事情。只是想确定一下。
-
在顶部粘贴
On Error GoTo ErrHandler,然后在底部粘贴Exit Sub,并在其下方制作ErrHandler:行标签,将Stop和Resume说明放在那里,然后逐步完成您的代码。它在哪里爆炸? -
您是否知道 Google 的软件可以识别过多的机器人搜索并在短时间内阻止 IP?