【VBA】アドインインストール時にショートカットキーを自動登録する方法

目次

はじめに

自作したExcelアドインを他の人に使ってもらう際、アドイン内の便利なマクロにショートカットキーを割り当てておくと、格段に使いやすくなります。しかし、利用者に手動でショートカットキーを登録してもらうのは不親切ですよね。

VBAには、アドインがインストール(有効化)された瞬間に、自動で処理を実行するための特別なイベント Workbook_AddinInstall が用意されています。これを活用すれば、アドインのインストールと同時に、マクロのショートカットキー登録を全自動で行うことができます。

この記事では、アドインのインストール時にショートカットキーを登録し、アンインストール時にそれを解除する、一連のスマートな方法をご紹介します。


インストール/アンインストール時のVBAサンプルコード

このコードは、アドインブックの ThisWorkbook モジュールに記述する必要があります。標準モジュールではない点に注意してください。

このマクロは、以下の2つのイベントプロシージャで構成されます。

  • Workbook_AddinInstall: アドインが有効化されたときに実行されます。
  • Workbook_AddinUninstall: アドインが無効化されたときに実行されます。

ThisWorkbook モジュールに記述する完成コード

' アドインがインストール(有効化)されたときに実行されるイベント
Private Sub Workbook_AddinInstall()
    
    ' --- ショートカットキーを登録 ---
    ' [Ctrl]+[Shift]+C に "CallMyTool" マクロを割り当て
    Application.OnKey "+^c", "CallMyTool"
    
    ' [Ctrl]+[Shift]+X に "ExitMyTool" マクロを割り当て
    Application.OnKey "+^x", "ExitMyTool"

    ' ユーザーに登録完了を通知
    MsgBox "アドインのツールをショートカットキーに登録しました。" & vbCrLf & vbCrLf & _
           "・ツールの呼び出し: [Ctrl]+[Shift]+C" & vbCrLf & _
           "・ツールの終了: [Ctrl]+[Shift]+X", vbInformation, "セットアップ完了"
           
End Sub

' アドインがアンインストール(無効化)されたときに実行されるイベント
Private Sub Workbook_AddinUninstall()

    ' --- 登録したショートカットキーを解除 ---
    ' 割り当てを解除するには、第2引数を空にする
    Application.OnKey "+^c", ""
    Application.OnKey "+^x", ""
    
End Sub


' --- アドインに実装されているマクロ(サンプル) ---
' ※以下のマクロは標準モジュールに記述します
Sub CallMyTool()
    MsgBox "ツールを呼び出しました!"
End Sub

Sub ExitMyTool()
    MsgBox "ツールを終了しました!"
End Sub

コードの解説

Private Sub Workbook_AddinInstall()

これは特別な名前のイベントプロシージャで、利用者が「Excelのオプション」→「アドイン」でこのアドインのチェックボックスをオンにした瞬間に、中のコードが自動的に実行されます。

  • Application.OnKey "+^c", "CallMyTool": Application.OnKey メソッドを使って、Ctrl + Shift + C というキー操作に、アドイン内の CallMyTool というマクロを割り当てています。

Private Sub Workbook_AddinUninstall()

こちらも特別なイベントプロシージャで、アドインのチェックボックスがオフにされた(無効化された)瞬間に実行されます。

  • Application.OnKey "+^c", "": OnKey メソッドの第2引数に空の文字列 "" を渡すことで、そのキーに割り当てられていたマクロを解除し、Excel本来の機能に戻しています。アドインを無効化した際に、不要になったショートカットキー設定を綺麗に消去するための、非常に重要な作法です。

コードを記述する場所

Workbook_AddinInstallWorkbook_AddinUninstall は、必ずアドインファイル(.xlam)の ThisWorkbook モジュール内に記述してください。プロジェクトエクスプローラーから ThisWorkbook をダブルクリックして表示されるコードウィンドウに記述します。ショートカットキーから呼び出されるマクロ本体(例: CallMyTool)は、通常通り標準モジュールに記述します。


まとめ

今回は、アドインのインストールとアンインストールをトリガーにして、ショートカットキーの登録と解除を自動化する方法を解説しました。

  • アドインのインストール時に処理を実行するには Workbook_AddinInstall イベントを使う。
  • アドインのアンインストール時には Workbook_AddinUninstall イベントで後片付けをするのが重要。
  • これらのイベントプロシージャは ThisWorkbook モジュールに記述する。

この仕組みを導入することで、利用者はアドインを有効化するだけで、すぐにショートカットキーを使いこなせるようになります。配布するツールの利便性を大きく向上させるテクニックですので、ぜひ活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次