- ベストアンサー
Google検索結果をExcelに取得する方法
- Excel2016を使って、Google検索の結果を自動的に取得する方法をご紹介します。
- 特定の語句の検索結果(5位まで)をExcelに取得し、タイトルとURLを表示させることができます。
- マクロを使用して、ロボットでない証明のクリックをしながら、検索結果を自動で取得することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>実は、検索したい語句が1000以上あります。 何で最初に書いてくれないんですか。 てっきり6件以下だと思いました。 ' Sub Macro1() ' Dim Col As Integer ' For Col = Cells(11, Columns.Count).End(xlToLeft).Column _ To Cells(1, Columns.Count).End(xlToLeft).Column GoogleGet Col, 5, False Next Col End Sub このように置き換えれば、既にデータのある所は処理されず、空白の所だけ処理されます。
その他の回答 (1)
- SI299792
- ベストアンサー率47% (774/1620)
' Option Explicit Declare Sub Sleep Lib "kernel32" ( _ ByVal dwMilliseconds As Long) ' Sub Macro1() ' Dim Col As Integer ' For Col = 1 To Cells(1, Columns.Count).End(xlToLeft).Column GoogleGet Col, 5, True Next Col End Sub ' Sub GoogleGet(Col As Integer, Count As Integer, Visible As Integer) ' Dim IE As Object Dim Links As Object Dim Row As Integer Dim Length As Integer ' Set IE = CreateObject("InternetExplorer.Application") IE.Navigate "https://www.google.co.jp/search?q=" & Cells(1, Col) IE.Visible = Visible BusyWait IE Row = 2 ' For Each Links In IE.Document.Links ' If Left(Links.InnerHtml, 3) = "<h3" Then Length = InStr(Links.InnerText & vbCrLf, vbCrLf) - 1 Cells(Row, Col) = Left(Links.InnerText, Length) Cells(Row + 1, Col) = Links.Href Row = Row + 2 ' If Row = Count * 2 + 2 Then Exit For End If End If Next Links ' If Visible > 1 Then IE.Quit End If Set IE = Nothing End Sub ' Sub BusyWait(IE As Object) ' While IE.Busy Or IE.ReadyState < 4 DoEvents Sleep 100 Wend End Sub GoogleGet Col, 5, False の所ですか、数を増やせば件数を増やせます。(最大10) また、その次は、TrueならIE表示、False なら非表示、1ならIEを開いておく。デバックの為のものです。
お礼
回答&マクロありがとうございます! 実は、検索したい語句が1000以上あります。 ですが、途中でロボットでない証明のクリックがあり、 一度マクロを止めないとならないです。 その際、再開すると、またA1から始めてしまいます。 これを、前回の途中から始めるようにはできるでしょうか? A1から検索結果の取得 ↓ ロボットでない証明のクリック画面でマクロストップ ↓ ストップした所から、マクロ再開 このような形が理想です。 よろしくお願いいたします。