Vba Excel中的Google搜索结果
我有一个很大的excel文件,a列中有很多字符串。 我想知道B栏中谷歌搜索结果的确切数量(尤其是显示0个结果的选项——事实上,只知道结果是否存在就足够了) 我知道存在用于此的VBA代码 摘自此 但我和这些评论的人有着同样的问题: 我让它在测试中运行了几次,但现在它说 运行时错误'2147024891(80070005)' 然后,当我调试它时,它会突出显示search_http.send 怎么了 我不是高级Excel用户,也不是VBA程序员,因此希望您能提供一些指导。也许我忽略了一些导致这个错误的基本因素 非常感谢, 毛里茨 我正在使用的代码:Vba Excel中的Google搜索结果,vba,excel,search-engine,Vba,Excel,Search Engine,我有一个很大的excel文件,a列中有很多字符串。 我想知道B栏中谷歌搜索结果的确切数量(尤其是显示0个结果的选项——事实上,只知道结果是否存在就足够了) 我知道存在用于此的VBA代码 摘自此 但我和这些评论的人有着同样的问题: 我让它在测试中运行了几次,但现在它说 运行时错误'2147024891(80070005)' 然后,当我调试它时,它会突出显示search_http.send 怎么了 我不是高级Excel用户,也不是VBA程序员,因此希望您能提供一些指导。也许我忽略了一些导致这个错误的
Public Sub ExcelGoogleSearch()Dim searchWords As String
With Sheets("Sheet1")
RowCount = 1
Do While .Range("A" & RowCount) <> ""
searchWords = .Range("A" & RowCount).Value
' Get keywords and validate by adding + for spaces between
searchWords = Replace$(searchWords, " ", "+")
' Obtain the source code for the Google-searchterm webpage
search_url = "http://www.google.com/search?hl=en&q=""" & searchWords & """&meta="""
Set search_http = CreateObject("MSXML2.XMLHTTP")
search_http.Open "GET", search_url, False
search_http.send
results_var = search_http.responsetext
Set search_http = Nothing
' Find the number of results and post to sheet
pos_1 = InStr(1, results_var, "resultStats>", vbTextCompare)
If pos_1 = 0 Then
NumberofResults = 0
Else
pos_2 = InStr(3 + pos_1, results_var, ">", vbTextCompare)
pos_3 = InStr(pos_2, results_var, "<nobr>", vbTextCompare)
NumberofResults = Mid(results_var, 1 + pos_2, (-1 + pos_3 - pos_2))
End If
Range("B" & RowCount) = NumberofResults
RowCount = RowCount + 1
Loop
End With
End Sub
Public Sub-ExcelGoogleSearch()将搜索词设置为字符串
附页(“第1页”)
行数=1
Do While.Range(“A”&RowCount)”
searchWords=.Range(“A”&RowCount).Value
'获取关键字并通过添加+来验证
searchWords=Replace$(searchWords,“,”+”)
'获取Google searchterm网页的源代码
搜索url=”http://www.google.com/search?hl=en&q=“&searchWords&”“&meta=”“”
设置search_http=CreateObject(“MSXML2.XMLHTTP”)
搜索http.Open“GET”,搜索url,False
搜索http.send
结果\u var=search\u http.responsetext
设置search\u http=Nothing
'查找结果数并发布到工作表
pos_1=InStr(1,结果变量,“resultStats>”,vbTextCompare)
如果位置1=0,则
NumberofResults=0
其他的
位置2=仪器(3+位置1,结果变量“>”,VBTEXTCOMPAR)
位置3=仪器(位置2,结果变量,“,VBTEXTCOMPAR)
NumberofResults=Mid(结果变量,1+pos_2,(-1+pos_3-pos_2))
如果结束
范围(“B”和行计数)=NumberofResults
RowCount=RowCount+1
环
以
端接头
我的理解是xmlhttp对一段时间内的连接数量有限制。只要在出错时更改为不同的xmlhttp对象,就有5个可供选择
URL必须100%正确。与浏览器不同,没有修复URL的代码
我的程序的目的是获取错误详细信息
如何获得正确的URL是在浏览器中键入URL,进行导航,并且正确的URL通常位于地址栏中。另一种方法是使用链接等的属性来获取URL
另外,Microsoft.XMLHTTP映射到Microsoft.XMLHTTP.1.0。HKEY_CLASSES_ROOT\Msxml2.XMLHTTP映射到Msxml2.XMLHTTP.3.0。试试晚一点的
使用xmlhttp尝试这种方法。编辑url的等。如果它似乎工作注释出如果/结束如果转储信息,即使看起来工作。它是vbscript,但vbscript在vb6中工作
On Error Resume Next
Set File = WScript.CreateObject("Microsoft.XMLHTTP")
File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False
'This is IE 8 headers
File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)"
File.Send
If err.number <> 0 then
line =""
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error getting file"
Line = Line & vbcrlf & "=================="
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description
Line = Line & vbcrlf & "Source " & err.source
Line = Line & vbcrlf & ""
Line = Line & vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText
Line = Line & vbcrlf & File.getAllResponseHeaders
wscript.echo Line
Err.clear
wscript.quit
End If
On Error Goto 0
Set BS = CreateObject("ADODB.Stream")
BS.type = 1
BS.open
BS.Write File.ResponseBody
BS.SaveToFile "c:\users\test.txt", 2
还要注意,在锁定发生之前,可以调用任何特定XMLHTTP对象的次数是有限制的。如果发生这种情况,并且在调试代码时发生了这种情况,只需更改为不同的xmlhttp对象即可
C:\Users>reg query hkcr /f xmlhttp
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP
HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0
HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0
End of search: 12 match(es) found.