Код выше творит чудеса. С другой стороны, происходит сбой, если искомая строка дает 0 результатов. Простой случай If решает это. Просто к вашему сведению.

вая столбец строк в Excel, есть ли простой способ вернуть количество результатов поиска в Google для каждой из строк? Я ищу способ преобразования списка текстовых данных из Excel в результаты поиска Google.

 Govert05 мар. 2012 г., 20:39
Вы можете взглянуть на бесплатную надстройку SEOTools Excel от Niels Bosma:nielsbosma.se/projects/seotools, Имеет большое количество похожих функций для веб-метрик.

Ответы на вопрос(3)

Решение Вопроса

идеяОтсюда (но модифицированный):

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

НТН

 Dr. belisarius22 янв. 2011 г., 06:40
@ user584974 Извините, у меня нет опыта использования Excel с нестандартными символами. Удачи! (возможно, вы захотите опубликовать еще один вопрос об этом!)
 user58497422 янв. 2011 г., 04:15
Благодарю. Кажется, это работает, за исключением того, что я хотел использовать его с текстом на кириллице, и это не работает с этим. Но я думаю, что могу понять это.
 user125064305 мар. 2012 г., 20:32
Я пробовал этот код, но получал сообщение об ошибке со строкой NumberofResults = Mid (results_var, 1 + pos_2, (-1 + pos_3 - pos_2)). Есть идеи, почему?

происходит сбой, если искомая строка дает 0 результатов. Простой случай If решает это. Просто к вашему сведению.

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

потому что Google немного изменил свой исходный код. Вот код, который работает с 11 ноября 2013 года для всех, кому он нужен (незначительная другая модификация, макрос игнорирует 1-ю строку, поэтому вы можете иметь заголовки столбцов и результаты поиска конвертируются в значения, чтобы они были готовы к манипулированию / сортировать в Excel.

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

Ваш ответ на вопрос