はじめに
自作した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_AddinInstall
と Workbook_AddinUninstall
は、必ずアドインファイル(.xlam
)の ThisWorkbook
モジュール内に記述してください。プロジェクトエクスプローラーから ThisWorkbook
をダブルクリックして表示されるコードウィンドウに記述します。ショートカットキーから呼び出されるマクロ本体(例: CallMyTool
)は、通常通り標準モジュールに記述します。
まとめ
今回は、アドインのインストールとアンインストールをトリガーにして、ショートカットキーの登録と解除を自動化する方法を解説しました。
- アドインのインストール時に処理を実行するには
Workbook_AddinInstall
イベントを使う。 - アドインのアンインストール時には
Workbook_AddinUninstall
イベントで後片付けをするのが重要。 - これらのイベントプロシージャは
ThisWorkbook
モジュールに記述する。
この仕組みを導入することで、利用者はアドインを有効化するだけで、すぐにショートカットキーを使いこなせるようになります。配布するツールの利便性を大きく向上させるテクニックですので、ぜひ活用してみてください。