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

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

解決済みの質問

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

A列1行から、ずっと右へキーワードが記入されています。
調べたいキーワードは、400近くあります。

その1行目にあるキーワードをGoogle検索をして、
検索結果のURLだけを、そのキーワードの下に表示させたいです。

検索結果は全部で10ページくらい、大体100個のURLになるかと思います。
(youtube動画や広告などは含めないです)

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

Excel2016です。
よろしくお願いいたします。

投稿日時 - 2019-04-11 13:17:49

QNo.9605675

困ってます

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

(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/

投稿日時 - 2019-04-11 17:44:46

ANo.1

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

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

回答(1)

あなたにオススメの質問