自作したExcelアドイン(元はマクロ)にショートカットキーを割り当てる

自作したExcelアドイン(元はマクロ)にショートカットキーを割り当てる
みるみ

備忘録です。

マクロをアドイン化してどのExcelファイルでも自由に使う方法を紹介しましたが、そうすると今度はマクロみたいにショートカットキーで手軽に使えないということに気付いたので、その解決方法をまとめました。

僕の環境はこの記事執筆時点でのOffice 365 Solo最新版(Excel2016相当?2019相当?)です。

手順

上記記事の方法でマクロがアドインとして登録されている場合、

C:\Users\[ユーザー名]\AppData\Roaming\Microsoft\AddIns

.xlamファイルが居ると思います。

その状態で、なんのExcelファイルでもOKなのでマクロのコード編集画面を出します。

excel-add-in-macro-shortcut-key-1

開いたら、左ペインのプロジェクトエクスプローラーに該当のアドインファイルが「VBAProject」として存在しているかを確認。

excel-add-in-macro-shortcut-key-2

これ。

もしない場合は、その.xlamファイルを直接開きに行けばたぶん表示されると思います。

そしたらその中の「Microsoft Excel Objects」を開き、「ThisWorkbook」をダブルクリックで開きます。

excel-add-in-macro-shortcut-key-3

あとは簡単、ここに下記コードをペーストするだけ。

''[Ctrl]+[K]を"マクロ名"に割り当てる
Private Sub Workbook_Open()
Application.OnKey "^k", "マクロ名"
End Sub
''[Ctrl]+[K]のショートカット割り当てをExcel標準に戻す
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^k"
End Sub

"マクロ名"となっている部分は、

excel-add-in-macro-shortcut-key-4

この関数名となる部分がそのまま入るだけです。例えば上図の場合だと"colorToBlack"とそのまま入力すればOKということ。

キーバインドについては、今回はCtrl+Kになってますがアルファベットだけを変えればCtrl+好きなキーにできるのはもちろん、

Application.OnKey "+m", "マクロ名"' [Shift]+[a]
Application.OnKey "+^m", "マクロ名"' [Shift]+[Ctrl]+[a]

こんな組み合わせも可能です。

ちなみに、コードの編集が成功していても全てのブックを閉じてExcel自体を再起動しないと僕の場合では有効になりませんでした。困ったら再起動を忘れずに。

ショートカットキーの割り当てのコードと、もうひとつ「キーマッピングを標準に戻す(割り当て解除)」コードを載せてますが、そこについてもちょっとだけ。

このコードによって割り当て中は上書きのような扱いになるものの、このワークブックを閉じたとき、つまりこのExcelアドインが無効化状態のときもショートカットキーの上書きが続いたままになってしまうので、解除の部分も一緒に書いておきましょう。

そうしないと、もし普段常用しているようなキーに割り当てたい場合は色々不都合が起きるかもしれないので。

追記 (2019/12/31) :最近思い付いたんですが、F1キーをからで上書きしてしまえばクソくらえの「ヘルプ」が起動するのを阻止できます。

本来はKeySwapなどでF1キー自体を無効化したいところですが、どうしてもF1を使うのがベストなシーンというのもあるので、これはかなりのライフハックだと思います。F2を押そうとしていつも困る方はぜひやってみてください。

おわりに

最近はExcelについてよく調べ物をするんだけど、どうにも欲しい情報がピンポイントでヒットしないことが多いですね。広く知られていないだけでExcelが持っているポテンシャルはもっとあるんじゃないか、とか思う今日このごろです。

その前にどうにかしてほしいもっと細かいイライラするところは山程あるんだけどね…。

みるみ
みるみ

ブロガー、ソフトウェアエンジニア。

この「みるめも」というブログの筆者です。

この記事へのコメント
コメントはまだひとつもありません :)

新しいコメントを書く

  • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
    ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
  • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
  • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。
    ※ここ数年スパムが激化しており、誤って削除されてしまうケースが増えてきました。スパムボックスも毎日自分の目で確認するようにはしているのですが、どうしても限界があります。確実に僕に連絡を取りたい方は メールTwitter からお願いします。