人生最悪の忘れ物

セルの値を好きなブラウザでGoogle検索する
https://vbabeginner.net/google-search-cell-values/

このページのサンプルコード
------------------
Sub WebSearch()
Dim sApl '// ブラウザのパス
Dim sWord '// 検索キーワード
Dim sUrl '// Googleの検索URL

'// ブラウザのフルパスを指定
' sApl = "C:\Program Files\Internet Explorer\iexplore.exe"
' sApl = "C:\Program Files\Mozilla Firefox\firefox.exe"
sApl = "C:\Program Files\Google\Chrome\Application\chrome.exe"

'// 検索URLを指定
sUrl = "www.google.co.jp/search?q="

'// 検索キーワードを取得
sWord = ActiveCell.Value

'// ブラウザを起動してGoogle検索を行う
Call Shell(sApl & " " & sUrl & sWord)
End Sub
------------------------------------------

これを参考に、セルの値をグーグルで検索したいのですが、なぜかセルの中にキーワードを複数入れるとクロームのタブがキーワード数開いて検索されます。

例えば、セルの値には・・

「ダイエット 痩せる 方法」

このキーワードが入っているとします。
(スペースは半角)

マクロを実行すると、クロームのタブが3つ開きます。

1つ目のタブは・・・
www.google.co.jp/search?q=ダイエット
2つ目のタブ・・・
痩せる/
3つ目のタブは・・・
方法/

1つ目のタブはダイエットで検索されるのですが、なぜか、2つ目と3つ目のタブは「このサイトにアクセスできません」と出ます。

ちなみに全角のスペースキーを入れると正しく

「ダイエット 痩せる 方法」

このキーワードで検索されます。

そこで質問ですが、半角キーのスペースでも1つのタブで複数キーワードを検索したいのですが、どうすればいいでしょうか?

できれば、スペースが全角と半角、どちらでもできるようにしたいのですが・・・。

どの辺りをいじればいいのか分からないで、教えていただけないでしょうか?

質問者からの補足コメント

  • 銀鱗さん

    回答ありがとうございます。

    当方、VBAのことがほとんど分かっていない状態です。もう少し詳しく教えていただけないでしょうか?

    出来たらコードを教えてもらうと嬉しいです。

    それと、セルの値ですが、キーワードはいつも3つだけとは限りません。

    2つの時もあれば、4つの時もあります。

    すいませんが、よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/08/01 22:52

A 回答 (2件)

こんにちは。



原因は#1様の解説の通りですが、Excel には EncodeURL ワークシート関数が用意されています。以下の様にしてみて下さい。

'// 検索キーワードを取得
sWord = WorksheetFunction.EncodeURL(ActiveCell.Value)

多分 Excel2007 以降で使えると思います。それ以前の古いバージョンの Excel だと CreateObject("ScriptControl") を使った方法がありますが、Windows10 など最近の OS だと動かないかもしれません。
    • good
    • 1
この回答へのお礼

KenKen_SPさん

回答ありがとうございました。

できました。

お礼日時:2022/08/02 07:29

セパレーターを指定していないので、タブで開きに行ってますね。



半角スペースは、第一パラメータと第二パラーメータを分けるセパレーターになります。
で、分けられると
 C:\Program Files\Google\Chrome\Application\chrome.exe www.google.co.jp/search?q=1つ目
 C:\Program Files\Google\Chrome\Application\chrome.exe 2つ目
 C:\Program Files\Google\Chrome\Application\chrome.exe 3つ目
という形でChromeが起動され別タブが開くのです。

全角スペースはセパレーターではないので、全角スペースを含む一つのパラメータとして認識されます。

・・・

では、半角スペースの場合はどうすれば良いのか……。
半角スペースを
 ”%20” 
に置き換えましょう。
 第一パラメーター%20第二パラメーター%20第三パラメーター
のようにするのです。

sWordに含まれる半角スペースを置換すればOK。

・・・

あるいは、sWord全体をダブルクォーテーションで囲んでしまう。
 "第一パラメーター 第二パラメーター 第三パラメーター" 
こうする。
(こっちのほうが簡単)
この回答への補足あり
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報