• ベストアンサー

Google検索をして、その下に検索結果(URL)

A列1行から、ずっと右へキーワードが記入されています。 調べたいキーワードは、400近くあります。 その1行目にあるキーワードをGoogle検索をして、 検索結果のURLだけを、そのキーワードの下に表示させたいです。 検索結果は全部で10ページくらい、大体100個のURLになるかと思います。 (youtube動画や広告などは含めないです) このようなことは、Excelのマクロでできるでしょうか? できるとしたら、どのようなマクロの記述になるでしょうか? Excel2016です。 よろしくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

(1)VBAと言えばVBAの中のなかの範囲の問題だが、ブラウザをプログラムで動かすのは、VBAの周辺のまた別の、スキルや経験が要る。質問者は、現在そこに達してないのでは。 (2)Googleで照会して出てくる、普通は、万を超える記事のうち最初のもののURLを捉えるのに、何の意味があるのか? 人間が記事内容を読んで、ニーズに対し、適否を判断して選ばないと、役立たないのでは? ーーー まあ、それではそっけないので、WEBに載っていたものを多少改変して、下記に載せておく。 質問する前に、Googleで「vba google 検索結果 取得」で照会して読んでみたら。 その中の1つの、https://teratail.com/questions/120109 のベストアンサーより流用。 標準モジュールに Sub g_search() Dim objIE As Object Dim rng As Range Dim y As Integer Dim xyz As String ' 対象Sheet名は、Sheet2です。 Sheets("Sheet2").Select '※下記の2行はForループの外にだす(IEを繰り返し開いたり閉じたりするのは無駄) Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '可視、Trueで見えるようにします。 MsgBox Cells(Rows.Count, 2).End(xlUp).Row For y = 3 To Cells(Rows.Count, 2).End(xlUp).Row xyz = Cells(y, 2).Value '検索語 '※URLパラメータに検索語を埋め込めば、検索結果を表示できる objIE.navigate "https://www.google.co.jp/search?q=" & xyz '--- Do While objIE.Busy = True Or objIE.READYSTATE <> 4 DoEvents Loop '--- '※検索結果にはクラス名"rc"が付けられているので、その最初のURLを取得 xyz = objIE.document.getElementsByClassName("rc")(0).GetElementsByTagName("a")(0).href Cells(y, 3).Value = xyz 'URLをC列に出力 Next y   ' IE終了 objIE.Quit Set objIE = Nothing End Sub Sheet2のB3セルから下方向に、語句等を入力しておいて実行のこと。 対応するC列に、URLを1つ記入して終わる。 結果例 Sheet2 B2:C4 B列   C列 大阪   https://www.jalan.net/kankou/270000/ 東京   https://ja.wikipedia.org/wiki/%E6%9D%B1%E4%BA%AC 奈良   https://www.travel.co.jp/guide/matome/103/

関連するQ&A

専門家に質問してみよう