和風スパゲティのレシピ

日本語でコーディングするExcelVBA

選択セルの値をGoogleで検索するマクロ

タイトルの通り、選択セルの値をググるマクロを紹介します。

実行サンプルはこちら↓

セルの値をGoogleで検索するアニメ


このマクロはかなり便利なマクロで、


顧客マスタ

↑このような業務データで作業をしているときに、

  • 社名からお客様のWEBサイトを検索
  • 商品名から商品ページを検索
  • 住所・所在地からGoogleMAPを開く

といった顧客情報の検索ができます。


また専門用語が出てくる集計・統計データで、

  • 製品名・素材名などの工業用語
  • 所見名・病名・検査名などの医療用語
  • 勘定科目のような経理・会計用語

など、各種専門用語に出くわしたときにも即座に用語の検索ができます。


さらにはVLOOKUPなど書きかけの関数の使い方をググったり、

Excel作業中にブラウザを開くのが面倒なときに、
「空のセルで実行してただブラウザを開く」なんて技も使えるようになります。


非常に汎用性が高く、かなりおすすめのマクロです。

リボンやクイックアクセスツールバーの登録も便利ですが、
ショートカットキーにセットすることで真価を発揮するマクロだと思います。


是非ご利用ください。

ソースコード

Sub 選択セルの値をインターネットで検索する()
    Dim 検索ワード As String
    検索ワード = Replace(Replace(ActiveCell.Text, " ", "+"), " ", "+")
    CreateObject("WScript.Shell").Run "www.google.co.jp/search?q=" & 検索ワード
End Sub

なんと3行のマクロです。
説明変数を使わなければ1行のワンライナーにもできます。

コード量対効果がこれほど高いマクロもなかなかないですね。


中身を解説しますと、まずCreateObjectで生成した
Wscript.Shell(WshShell)オブジェクトのRunメソッドは、
ファイルパスを受け取って拡張子を判定し、既定のアプリで開く」メソッドです。


例えば、

CreateObject("Wscript.Shell").Run "C:\Users\○○\Desktop\メモ.txt"

↑このコードを実行すると、私の場合は「メモ帳」でメモ.txtが開きます。


「拡張子に紐づいた規定のアプリケーションで開いてくれる」
というのが便利なメソッドですね!


PDFも実行した人が普段使っているアプリで開いてくれますし、

なんなら

CreateObject("Wscript.Shell").Run "C:\Users\○○\Desktop\テストブック.xlsx"

を実行することで、Excelでブックを開くこともできます。



そして今回使ったこのメソッドの便利な特長が、
URLを渡すと既定のブラウザで開いてくれる
という仕様です。


これを利用して、

CreateObject("Wscript.Shell").Run 開きたいURL

とするだけで、既定のブラウザでWEBページを開くことができます。


あとはVBAではなくGoogleさんのURLの仕組みの話なのですが、

Googleさんの検索ページは「www.google.co.jp/search?q=検索ワード」
というURLになっていますので、この検索ワードにActiveCell.Valueを渡せば、
選択セルの値をGoogleで検索することができます。


最後にちょっとした微調整で

  • 日付、単位、エラー値の検索にも使えるようActiveCell.ValueではなくActiveCell.Textを検索ワードに採用
  • 「和歌山 みかん」といった複数検索は「?q=和歌山+みかん」と「+」を使うので、半角/全角スペースを+に置換してからURLに

というコードを追加して完成となります。


完成コードを再掲↓

Sub 選択セルの値をインターネットで検索する()
    Dim 検索ワード As String
    検索ワード = Replace(Replace(ActiveCell.Text, " ", "+"), " ", "+")
    CreateObject("WScript.Shell").Run "www.google.co.jp/search?q=" & 検索ワード
End Sub

 

理屈も簡単で応用も効くコード(+GoogleさんのURLの仕組み)だと思いますので、
せっかくのこの機会に覚えてしまいましょう。


なお、そもそもURL内に半角/全角スペースがあると正しく動作しないため、
その対策と複数検索をかねて"+"に置換していましたが、

代わりに、

検索ワード = WorksheetFunction.EncodeURL(ActiveCell.Text)

とする方法もあります。

文字列をURL形式(日本語を含むURLで%がいっぱい出てくるアレ)にする関数EncodeURLを使えば、スペースは%20になってちゃんと動きますし、Googleさんも複数検索と認識してくれます。

WEB系のお仕事にも関わる方は、この関数も覚えてあげてください。
風柳さん情報ありがとうございました!)



以上でソースコードの解説を終わります。


このマクロを個人用マクロブックなどに書いて、
ツールバーやショートカットキーにセットして使ってください。


個人用マクロブックの使い方についてはこちらをどうぞ。

www.limecode.jp


その他の汎用マクロ群はこちらをどうぞ。

カテゴリ記事一覧:汎用マクロ・便利ツール


おまけ:どのキーに割り当てるか

さてこの便利なマクロ、せっかくなのでベンチ入りのCtrl+Shift+○ではなく、
スタメンのCtrl+○に仲間入りさせたいと思いました。


ということでどれか既存のショートカットを上書きしたいのですが、
GoogleのGを使ったCtrl+Gは、流石に元のショートカット「ジャンプ」が便利です。

まあ私はジャンプはF5でやるのでいらないですが、
汎用マクロは社内配布も行うため、そうも言ってられません。


ということで私は、「セル値をインターネットで検索する」というマクロ名にして、
頭文字である「Ctrl+I」を割り当てました。

元のショートカットは「イタリック(斜体)にする」といういらない子なので、
上書きしても問題ないでしょう。


しかしいざ配付すると「動かなくなった」という問い合わせが結構来て、
聞いてみるとみんな「Ctrl+E」を間違って押していたのです。



あー


EdgeとIE

こいつらね。確かに・・・



ということで、長らくIEを使い、そのままEdgeに移行した企業では、
「Ctrl+e」をセットするのもおすすめかもしれません。


元のショートカット「フラッシュフィル」は斜体ほどいらない子ではないですが、
いろいろ危ないやつだし、まあ封印してもいいでしょう(多分)


この辺、どうでもいいことだと思うかもしれませんが、
汎用マクロをたくさん作るとどのマクロがどのキーにセットされているかわからなくなる問題が発生します。


なるべく頭文字などを使って意味のあるキー設定をするのも、
ショートカットマクロの利便性の内だと思います。


実行内容と一緒に、割り当てキーにも気を配ってあげましょう。