Excel的Google结果数量

给定Excel中的一串string,有没有简单的方法来返回每个string的谷歌search结果的数量? 我正在寻找一种方法来将Excel中的文本数据列表转换为Googlesearch结果。

想法从这里 (但修改):

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) 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)) Range("B" & RowCount) = NumberofResults RowCount = RowCount + 1 Loop End With End Sub 

替代文字

HTH

此代码需要更新,因为Google稍微更改了其源代码。 这里是一个代码,2013年11月11日,任何人谁需要它(略有其他修改,macros忽略第1行,所以你可以有列标题和search结果转换为值,所以他们已经准备好操纵/用Excelsorting。

 Public Sub ExcelGoogleSearch() Dim searchWords As String With Sheets("Sheet1") RowCount = 2 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 = "https://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, "div id=" & Chr(34) & "resultStats", vbTextCompare) + 21 If pos_1 = 21 Then NumberofResults = 0 Else pos_2 = InStr(pos_1, results_var, "result", vbTextCompare) - 1 NumberofResults = Val(Replace(Replace(Mid(results_var, pos_1, pos_2 - pos_1), ",", ""), "About", "")) End If Range("B" & RowCount) = NumberofResults RowCount = RowCount + 1 Loop End With End Sub 

上面的代码创造奇迹。 另一方面,如果search到的string带来0结果,则会崩溃。 一个简单的例子解决这个问题。 只是fyi。

 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