В настоящее время я работаю над проектом Excel, использующим код VBA для автоматизации того, что в противном случае было бы почти невозможным ручным заданием. У меня есть таблица из примерно 25 000 ключевых слов компании, из которой я хотел бы получить URL веб-сайта компании. Поэтому я хочу запустить скрипт VBA, который может запускать эти ключевые слова как поиск в Google, и перетащить URL-адрес первого результата в электронную таблицу. Я хотел бы заявить, что я очень новичок в использовании такого кода, поэтому, возможно, я упускаю из виду нечто, кажущееся простым для других.
Я протестировал код, найденный в похожая тема , но обнаружил, что результаты этого очень удачные; некоторые ключевые слова возвращали бы URL в следующем столбце, тогда как другие оставались бы пустыми. Похоже, он также извлекает URL-адрес оптимизированных вложенных ссылок Google в первом результате поиска, а не URL основного веб-сайта (см. Ссылку ниже):
Пример результата поиска Google
Затем я нашел следующий код здесь , который я запустил в примерном списке из 1000 ключевых слов. Автор этого блога утверждает, что этот код работает для Mozilla Firefox. Я протестировал код IE, который он также написал, но это не дало тех же результатов (это было добавление гиперссылок, состоящих из описательного текста из результатов поиска, а не из необработанного URL). Код Firefox (я вставил этот код для справки) работал без сбоев до 714-й строки, где макрос вернул сообщение об ошибке « Ошибка времени выполнения 91: переменная объекта или переменная блока не установлена . на данный момент и как я могу настроить этот код, чтобы избежать ошибок в будущем.
Sub GoogleURL ()
Dim url As String, lastRow As Long
Dim XMLHTTP As Object
Dim html As Object
Dim objResultDiv As Object
Dim objH As Object
lastRow = Range(“A” & Rows.Count).End(xlUp).Row
For i = 2 To lastRow
url = “https://www.google.co.uk/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 objH = objResultDiv.getelementsbytagname(“h3”)(0)
Cells(i, 2).Value = objH.innerText
Set html = CreateObject(“htmlfile”)
html.body.innerHTML = XMLHTTP.ResponseText
Set objResultDiv = html.getelementbyid(“rso”)
Set objH = objResultDiv.getelementsbytagname(“cite”)(0)
Cells(i, 3).Value = objH.innerText
DoEvents
Next
End Sub