タイトルの通り、選択セルの値をググるマクロを紹介します。
実行サンプルはこちら↓
このマクロはかなり便利なマクロで、
↑このような業務データで作業をしているときに、
- 社名からお客様の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系のお仕事にも関わる方は、この関数も覚えてあげてください。
(風柳さん情報ありがとうございました!)
以上でソースコードの解説を終わります。
このマクロを個人用マクロブックなどに書いて、
ツールバーやショートカットキーにセットして使ってください。
個人用マクロブックの使い方についてはこちらをどうぞ。
その他の汎用マクロ群はこちらをどうぞ。
おまけ:どのキーに割り当てるか
さてこの便利なマクロ、せっかくなのでベンチ入りのCtrl+Shift+○ではなく、
スタメンのCtrl+○に仲間入りさせたいと思いました。
ということでどれか既存のショートカットを上書きしたいのですが、
GoogleのGを使ったCtrl+Gは、流石に元のショートカット「ジャンプ」が便利です。
まあ私はジャンプはF5でやるのでいらないですが、
汎用マクロは社内配布も行うため、そうも言ってられません。
ということで私は、「セル値をインターネットで検索する」というマクロ名にして、
頭文字である「Ctrl+I」を割り当てました。
元のショートカットは「イタリック(斜体)にする」といういらない子なので、
上書きしても問題ないでしょう。
しかしいざ配付すると「動かなくなった」という問い合わせが結構来て、
聞いてみるとみんな「Ctrl+E」を間違って押していたのです。
あー
こいつらね。確かに・・・
ということで、長らくIEを使い、そのままEdgeに移行した企業では、
「Ctrl+e」をセットするのもおすすめかもしれません。
元のショートカット「フラッシュフィル」は斜体ほどいらない子ではないですが、
いろいろ危ないやつだし、まあ封印してもいいでしょう(多分)
この辺、どうでもいいことだと思うかもしれませんが、
汎用マクロをたくさん作るとどのマクロがどのキーにセットされているかわからなくなる問題が発生します。
なるべく頭文字などを使って意味のあるキー設定をするのも、
ショートカットマクロの利便性の内だと思います。
実行内容と一緒に、割り当てキーにも気を配ってあげましょう。