複数の検索結果をexcelに取り込む方法

このQ&Aのポイント
  • excelで複数の検索結果を取り込む方法を知りたいです。検索ワードをexcelのA列に書き、google検索した結果をexcelに取得したいです。
  • 最初の1ページの10件のgoogle検索結果を1枚のexcelシートにまとめたいです。検索結果のタイトルとURLを取得したいです。
  • excel2007で試した方法ではうまくいかなかったので、他の方法がありましたら教えてください。
回答を見る
  • ベストアンサー

複数の検索結果をexcelに取り込む方法

例えば、添付画像のようにexcelのあるシートのA列に検索ワードが書かれていて、それぞれの検索ワードでgoogle検索した結果(タイトル、URL)をexcelに取り込むにはどのようにしたらよいでしょうか? ・検索ワードは100個以内 ・取得するgoogle検索結果は最初の1ページの10件 ・取得する結果はシートを分けず、1枚のシートにまとめる 以上のようなことをしたいです。 少ししたいことと異なりますが、こちらの記事を試しに行ってみました。 しかし、「インデックスが有効範囲でありません」と表示されうまくいきませんでした。 http://yumem.cocolog-nifty.com/excelvba/2012/03/webgoogle-c0f1.html 行った方法 (visualBasicを開き、thisworkbookをダブルクリックーコードを貼り付けーexcelに戻り、マクロを実行) 環境:excel2007 excel初心者のわたしではまったくお手上げなので質問させていただきました。 先に記載したとおりのことをecxelでできないでしょうか?

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

  • ベストアンサー
回答No.1

こんにちは。 リンク先のソースは、英数字の検索ワードによる検索専用です。 漢字やかな等は適切な文字に書換えた上で URLを指定し直してあげないとなりません。 【urlエンコード】や【UTF-8 文字コード】等調べてみて下さい。 下記のスクリプトにコメントした  ▼検索結果以外のリンクを除外  ▼検索結果欄外にある文字列を見つけたら検索終了 この箇所は、日頃の管理の中で修正を加える部分です。 Googleがいつデザインを変更するか判りませんし、 私も過分なテストは出来ませんから、 例示された検索ワードで、今日、試したら 正しく機能することを確認できた、そこまではやりました、 ということです。 > excel初心者のわたしではまったくお手上げなので  リンク先のスクリプトを動くように、  望んだように編集を加えて、 という意味で、今回リンク先の趣旨を残して書き換えてお応えしますが、 ここに示すVBAを、編集・管理・メンテナンスするのは、 上級者に頼ることになるだろうこと、を理解しておいてください。 尚、Googleの利用規約については、そちらで確認して 余裕が出来た頃、Google API のことも知っておいてください。 Google索、という名前のマクロを実行することになります。 ・検索ワードのシートを事前に選択しておく ・検索ワードはA列にある ・結果は新しいシート1枚に纏める ・取得するgoogle検索結果は最初の10件以下 ・結果シート、A列は[検索ワード]  B列は[タイトル]を表示したハイパーリンク、C列は[URL] VisualBasicエディタを開き、"thisworkbookをダブルクリック"したら Alt I M の順にタイプすると、標準モジュール[Module1]が挿入されるので そこに下記のスクリプトを貼り付けてください。 頑張ってください。 ' ' 〓 標準モジュール 〓 ' ' // Google検索結果をWebクエリで取得 Sub Google索() Const Start2 = 10 'Start2 = 取り出す結果数 Const Google = "https://www.google.co.jp/search?q=" Dim sh1 As Worksheet, sh2 As Worksheet, rng As Range, c As Range Dim m, v, sWord As String, sURL As String, sName As String Dim sh2Row As Long, tn As Long, cn As Long, i As Long, flg As Boolean  m = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row).Value ' 検索ワードを配列に取込む  tn = UBound(m) ' 検索ワード総数  Application.Cursor = xlWait ' カーソル砂時計  Application.ScreenUpdating = False  Set sh2 = Sheets.Add(After:=ActiveSheet) '検索結果シート作成  Cells(1, 1) = "検索ワード"  Cells(1, 2) = "Title(リンク)"  Cells(1, 3) = "URL"  Set sh1 = Sheets.Add(After:=sh2) 'Webクエリシート追加  For Each v In m ' 検索ワード総当たり   cn = cn + 1   If v <> "" Then    sWord = Trim$(Replace(v, " ", " ")) ' 検索ワードのスペース半角にしてトリミング    Application.StatusBar = tn & " 件中 " & cn & " 件め 【" & sWord & "】 を検索中" ' ステータスバー    sh2.Cells(sh2Row + 1, "A") = sWord ' 検索ワードをA列に出力    sURL = Google & EncodeUTF8(sWord) ' GoogleSerach & 検索キーワードを★UTF-8にエンコード★した文字列    'Webクエリ作 成    With sh1.QueryTables.Add( _     Connection:="URL;" & sURL, _     Destination:=Range("A1"))     .WebSelectionType = xlEntirePage     .WebFormatting = xlWebFormattingAll     .BackgroundQuery = False     .Refresh    End With    'Webクエリからデータ取得    Set rng = Range("A:A").Find("検索結果", , , xlWhole)    Set rng = Range(rng(2, 1), Cells(Rows.Count, "A").End(xlUp))    i = 0    For Each c In rng     If c.Hyperlinks.Count Then      If c(2, 1).Hyperlinks.Count = 0 And c(2, 1) <> "" Then       With c.Hyperlinks(1)        flg = False ' ▼検索結果以外のリンクを除外        flg = .Address Like Google & "*" ' Google検索へのリンク除外        flg = flg Or .Address Like "https://webcache*" ' キャッシュへのリンク除外        flg = flg Or .Address Like "http://webcache*" ' キャッシュへのリンク除外        flg = flg Or .Address Like "https://www.google.co.jp/maps*" ' Mapへのリンク除外       End With       If Not flg Then        sh2Row = sh2Row + 1        c.Copy sh2.Cells(sh2Row, 2)        sh2.Cells(sh2Row, 3) = c.Hyperlinks(1).Address        i = i + 1        If i = Start2 Then Exit For       End If      End If     Else      flg = False ' ▼検索結果欄外にある文字列を見つけたら検索終了      flg = c Like "*関連する検索キーワード"      flg = flg Or c Like "他の場所を探す"      If flg Then Exit For ' ▲検索終了     End If    Next    sh1.QueryTables(1).Delete    sh1.UsedRange.Clear   End If  Next  Application.DisplayAlerts = False  sh1.Delete 'Webクエリシート削除  Application.DisplayAlerts = True  sh2.Select ' 検索結果シート表示  sh2.Columns("A:C").AutoFit ' 列幅調整  Application.StatusBar = "" ' ステータスバー元に戻す  Application.Cursor = xlDefault ' カーソル通常に戻す  Application.ScreenUpdating = True End Sub ' ' // URLエンコードした文字列(UTF-8)を返す関数 Private Function EncodeUTF8(ByVal Source As String) As String  Dim oHtmlFile As Object  Dim oElement As Object  Source = Replace(Source, "\", "\\")  Source = Replace(Source, "'", "\'")  Set oHtmlFile = CreateObject("htmlfile")  Set oElement = oHtmlFile.createElement("span")  oElement.setAttribute "id", "rresponse"  oHtmlFile.appendChild oElement  oHtmlFile.parentWindow.execScript _     "document.getElementById('rresponse').innerText " _     & "= encodeURIComponent('" & Source & "');", "JScript"  EncodeUTF8 = oElement.innerText End Function

itatwaok
質問者

お礼

realbeatin様 まさにやりたいことができました! ありがごうございます。 50個以上のキーワードになるとエラーになる時が時々がありますが、 これはパソコンが影響しているのかもしれません。 2回に分割するなどすれば対処できそうです。 本当に助かりました。重ね重ねありがとうございます。

関連するQ&A

  • 【VBA】このソースのどこを変更すれば良いの!?

    Excelでマクロを使い、検索結果の一覧を取得したいと考えています。 検索した結果、こちらのサイトを見つけました。 ------------------------------------------------------------------- 「WebクエリでGoogleの検索結果を取得する」 http://yumem.cocolog-nifty.com/excelvba/2012/03/webgoogle-c0f1.html ------------------------------------------------------------------- 問題なく動いたのですが、 URLの部分がホームページのタイトルではなく、 「キャッシュ」「類似ページ」と表示されます。 どの部分を、どの様に書き換えれば、HPのタイトルを表示されるようになるのでしょうか? また可能であれば、URLとHPのタイトルを別にして表示させたいのですが、そちらも分かれば教えて下さい。

  • Google検索の結果を、Excelにまとめる

    とあるキーワードでGoogle検索をして、 その検索結果をExcelにまとめたいです。 まとめたい情報は、検索結果のサイトタイトルとURLです。 検索結果の全てをExcelにまとめたいです。 おそらく100件くらい?だと思います。 これを、マクロを組んで自動でできたりするでしょうか? どのような記述でできるでしょうか? Excel2016です。 よろしくお願いいたします。

  • Excel VBAで検索する

    Excel VBAで、Sheet1に貼り付けたテキスト内から Sheet2に記載した(1列ごとの)キーワードを検索し キーワードが含まれている行をSheet3に貼り付ける処理をしているのですが、始めたばかりなので上手くいきません。 下記がソースです。 Dim moji As String Dim word As String Dim result As Integer For i = 3 To 103 For j = 2 To 21 moji = ThisWorkbook.Worksheets("Sheet1").Cells (i, 1).Value word = ThisWorkbook.Worksheets("Sheet2").Cells (j, 2).Value result = InStr(moji, word) If doResult <> 0 Then For k = 1 To 100 ThisWorkbook.Worksheets("Sheet3").Cells (k, 1).Value= moji Next k End If Next j Next i このソースでは上手くいかないのですが、どこがダメなのか分からないので、解決の糸口がつかめません。 アドバイスなどお願いします。

  • 入力値で検索KEYを検索して検索結果を2つ返す方法

    ●質問  下記のようなエクセルシートに、【入力値】、【取得値】、【検索KEY】、【変換値1】、【変換値2】   があります。【入力値】に1~9迄の数字を入力すると、その値で【検索KEY】を検索して 【変換値1】、【変換値2】の値を【取得値1】、【取得値2】に返すようにしたい。 ※A列:入力値、B列:取得値1、C列:取得値2、D列:検索KEY、E列:変換値1、F列:変換値2 ●エクセルシート    入力値  取得値1 取得値2  検索KEY  変換値1 変換値2      1      6     99       0      5      11   5      0      7       1      6      99   0      5     11       2      7       3   2      7      3        3      8      12   3      8     12       4      9       5   9      4     77       5      0       7    :      :             6      1      43    :      :             7      2      21                        8      3      35                        9      4      77        ●注意事項   ・エクセルは2010です。 以上、ご回答よろしくお願いします。

  • 入力値で検索KEYを検索して検索結果を取得する方法

    どなたかご存じでしたらご回答よろしくお願いします。 ●質問  下記のようなエクセルシートに、【入力値】、【取得値】、【検索KEY】、【変換値】があります。  【入力値】に1~9迄の数字を入力すると、その値で【検索KEY】を検索して【変換値】の値  を【取得値】に返すようにしたい。 ●エクセルシート    入力値  取得値  検索KEY  変換値      1      6     0      5   5      0     1      6   0      5     2      7   2      7     3      8   3      8     4      9   9      4     5      0    :      :     6      1    :      :     7      2                8      3                 9      4        ●注意事項   ・エクセルは2010です。 以上、ご回答よろしくお願いします。     

  • Google検索のサイトURLをエクセルにまとめる

    Google検索でキーワードを検索して、 その検索結果のサイトURLをエクセルにまとめたいです。 一つずつやるとかなり大変なので、エクセルで効率やりたいです。 まとめるサイトURLは、100位くらいまで取得したいです。 これは、エクセル(マクロ)でできるでしょうか? どのような記述で取得できるでしょうか? エクセル2016です。 よろしくお願いいたします。

  • excel検索結果を表に

    excelですべて検索をかけると、結果が「検索と置換」の下に表形式でブック、シート、名前、セル、値、数式と表示され それらをクリックで情報にアクセスできるが、この結果を別のexcelシートとして移すことはできないものでしょうか。 どうかよろしくお願いします。

  • ExcelVBAにおいて複数の検索結果をメッセージボックスの選択によっ

    ExcelVBAにおいて複数の検索結果をメッセージボックスの選択によって選びたいのですが・・・。 早速の質問で申し訳ありません。 まず、ExcelVBAにおいて、複数の結果を返す、部分検索を行いたいと思っております。 例えば、セルに「田中」と入力してあり、それを別のシートの名簿一覧の順に検索し、「田中」、「小田中」、「田中原」といったように複数の結果を返したいと考えております。 次に、返した結果につきまして、その都度メッセージボックスを表示させ、「はい」ならばそこで検索をやめてその値を、「いいえ」ならば次の結果を、「キャンセル」ならば中止という様にしたいと考えております。 例えば、「田中」で検索した場合、「田中」でよろしいですか?→いいえ→「小田中」でよろしいですか?→いいえ→「田中原」でよろしいですか?→はい、で指定セルには「田中原」と表示させたいのです。 どのように書けばよいか、ご教授お願いできないでしょうか。 どうか、よろしくお願いします。 また、検索につきまして読み検索というのはできるのでしょうか?(例えば「たなか」で検索しても上のようになるような)可不可だけでも構いませんので、参考までに教えていただけると幸いです。

  • エクセルでの検索結果表示について

    シート1のA列に番号を入力するセルがあります。 シート2のA列に番号・B列に名前が入力されています。 シート1のA列に番号を入力するとシート2のA列を検索かけてシート1のB列に検索した結果の名前を表示させたいのですが、エクセルでできるでしょうか? よろしくお願いします

  • Excel上で検索フォームを作りたいと思います。

    Excel上で検索フォームを作りたいと思います。 Excel2007を使用しているのですが、 既存のデータベースがあるシートを参照して、検索フォームを別シートに作成し、 そこに検索ワードを入れると所定の場所に結果が表示される(もし該当なしならそのように表示される)ようなものをエクセル上で作りたいのですが、こういったことは可能なのでしょうか。 想定しているのは単語帳のようなもので、日本語と外国語を対照させたデータベースがあるのですが、それの検索ボックスを作ってみたいと考えています。 なにか方法を知っている方がいましたら、よろしくお願いします。

専門家に質問してみよう