みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Google検索の結果、5位までをセルに記入するマ

A1|B1|C1|D1|E1|F1|
のそれぞれの1行目に、検索したい語句が記入されています。

その検索したい語句の検索結果(5位まで)を、
それぞれの1行目の下へ表示させたいです。

取得して記入したいデータは、「タイトルとURL」です。

A1|B1|

タ|タ|
URL|URL|


ずっと、これを手動でやっていたのですが、
調べる語句がかなり増えてしまい、マクロで自動化したいです。

いくつかGoogle検索をしたら、
ロボットでない証明のクリックをしないとならないです。

おそらく、休み休みで動かす様になるかと思いますが、
Google検索の結果をExcelに取得するというのは、マクロでできるでしょうか?

できるとしたら、どのようなマクロの記述でできるでしょうか?


Excel2016を使っています。
よろしくお願いいたします。

投稿日時 - 2019-05-05 20:59:52

QNo.9613893

困ってます

質問者が選んだベストアンサー

>実は、検索したい語句が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

このように置き換えれば、既にデータのある所は処理されず、空白の所だけ処理されます。

投稿日時 - 2019-05-06 14:35:41

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

'
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を開いておく。デバックの為のものです。

投稿日時 - 2019-05-05 22:50:03

お礼

回答&マクロありがとうございます!


実は、検索したい語句が1000以上あります。

ですが、途中でロボットでない証明のクリックがあり、
一度マクロを止めないとならないです。

その際、再開すると、またA1から始めてしまいます。
これを、前回の途中から始めるようにはできるでしょうか?

A1から検索結果の取得

ロボットでない証明のクリック画面でマクロストップ

ストップした所から、マクロ再開

このような形が理想です。
よろしくお願いいたします。

投稿日時 - 2019-05-06 04:40:16

あなたにオススメの質問