目次
Alt + F8 キー
今回の投稿では、 Excel (エクセル)のマクロをキーボードのショートカットキーから実行する方法を記載しています。具体的には、「Alt + F8」のショートカットキーからマクロの実行が可能なようです。私の使用している Excel のバージョンは「Excel 2003」と少し古いですが、良ければ参考にご覧ください。

マクロの実行方法
「Alt + F8」のショートカットキーからマクロを実行する方法を以下に掲載しています。 Step.1 ~ 3 まであります。
Step.1
マクロが含まれていると思われるワークブックで「Alt + F8」のショートカットキーを押してみます。

Step.2
そうすると、実行可能なマクロが一覧で表示されると思います。一覧の中に「マクロ1」という名前のマクロが存在しているようですね。
一覧から「マクロ1」を選んで、右上の「実行」ボタンを押してみます。

Step.3
「実行」ボタンを押すと、「マクロ1」が実行されて、以下の画像のメッセージボックスが表示されました。

Private Sub
次は違うパターンを試してみます。以下のマクロをワークブックに保存してみました。
Sub A()
MsgBox "「A」を実行しました。"
End Sub
Public Sub B()
MsgBox "「B」を実行しました。"
End Sub
Private Sub C()
MsgBox "「C」を実行しました。"
End Sub
上記、「A」「B」「C」のマクロがワークブックに保存されている場合、「A」「B」は、「Alt + F8」のショートカットキーから実行可能です。
「C」は、「Alt + F8」のショートカットキーから直接は実行出来ず、他のマクロから呼び出して実行するマクロになっています。「A」「B」との違いは、「Sub」の前に「Private」が記述されている部分です。
「Private Sub」から始まるマクロは「Alt + F8」で表示されるマクロの一覧にも表示されないようです。文字通りプライベートなマクロになっているようです。
上記のマクロが保存されているワークブックで「Alt + F8」のショートカットキーを押すと、以下の画像のように、マクロ「A」「B」のみが表示されると思います。

マクロ「C」を実行したい場合は、別のマクロから呼び出して実行するようになると思います。
上のマクロのコードの末尾に以下のコードを追加してみます。「Call C」の記述でマクロ「C」を呼び出して実行しています。
Sub D()
Call C
MsgBox "「D」を実行しました。"
End Sub
上のマクロ「D」を実行すると、以下の画像のように、メッセージボックスが 2 回表示されました。マクロ「C」が実行されたようです。


別のブックのマクロ
今度は、別のブックに保存されているマクロを「Alt + F8」から実行可能かを試してみます。
まずは、「Book1」と「Book2」を開いておきます。

「Book1」に以下のマクロを保存しておきます。
Sub BOOK1_A()
MsgBox "「BOOK1_A」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
Public Sub BOOK1_B()
MsgBox "「BOOK1_B」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
Private Sub BOOK1_C()
MsgBox "「BOOK1_C」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
「Book2」に以下のマクロを保存しておきます。
Sub BOOK2_A()
MsgBox "「BOOK2_A」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
Public Sub BOOK2_B()
MsgBox "「BOOK2_B」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
Private Sub BOOK2_C()
MsgBox "「BOOK2_C」を実行しました。"
MsgBox "アクティブなワークブックは " & ActiveWorkbook.Name & " です。"
End Sub
「Book1」を選択した状態で、「Alt + F8」のショートカットを実行してみます。
そうすると、以下の画像のように、「Book2」に保存しておいたマクロ「BOOK2_A」「BOOK2_B」も表示されて実行できる状態になっています。
まずは、「BOOK1_A」のマクロを実行してみます。

「BOOK1_A」のマクロを実行してみると、以下の画像のメッセージボックスが連続して表示されました。
「Book1」を選択した状態で、マクロを実行したので、アクティブなワークブックは「Book1.xls」になっているようです。


次は、「Book1」を選択した状態で、「BOOK2_A」のマクロを実行してみます。

そうすると、以下の画像のメッセージボックスが表示されました。「Book1」を選択した状態で「Book2」にあるマクロを実行したので、アクティブなワークブックは「Book1.xls」となっているようです。


どんなマクロが保存されている?
ワークブックに保存されているマクロの存在を調べる場合は、「Alt + F11」のショートカットを実行してみます。
ワークブックに保存されているマクロを調べる方法を以下に記載しています。 Step.1 ~ 3 まであります。
Step.1
マクロが含まれていると思われるワークブックで「Alt + F11」のショートカットを実行してみます。今回は、例として「Book1」上で実行してみます。

Step.2
そうすると、別ウィンドウで以下のような画面が表示されると思います。このウィンドウは VBE( Visual Basic Editor )と云うものです。

Step.3
VBE の左側のウィンドウに以下のようなリストが表示されていると思います。左側のウィンドウは「プロジェクトエクスプローラー」という名前です。
[ - ] VBA Project ( Book1 ) '---(1) [ - ] Microsoft Excel Objects '---(2) Sheet1 ( Sheet1 ) '---(3) Sheet2 ( Sheet2 ) '---(4) Sheet3 ( Sheet3 ) '---(5) ThisWorkbook '---(6) [ - ]標準モジュール '---(7) Module1 '---(8)
'---(1) から '---(8) の説明を以下に記載しています。
[ - ] VBA Project ( Book1 ) '---(1)
ワークブック 1 つにつき、 1 つの「VBA Project」(ブイビーエー プロジェクト)階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。
[ - ] Microsoft Excel Objects '---(2)
ワークブック 1 つにつき、 1 つの「Microsoft Excel Objects」(マイクロソフト エクセル オブジェクト)階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。
Sheet1 ( Sheet1 ) '---(3)
ワークブックに存在するワークシートの数だけ存在する「ワークシートオブジェクト」というものです。オブジェクトとは、パソコンのメモリ上にある物体のようなものでしょうか。 Excel の内部的には、オブジェクトという形式でもワークシートの存在を把握しているようです。
ワークシートオブジェクトには、マクロを設定可能なので、マクロが記述されているかもしれません。
プロジェクトエクスプローラーの中の「Sheet1 ( Sheet1 )」をダブルクリックすると、右側のウィンドウにマクロのコードが記述されているかもしれません。右側のウィンドウは「コード ウィンドウ」という名前です。

右側のウィンドウに下記のマクロが記述されていますね。
Private Sub Worksheet_Activate()
MsgBox "Worksheet_Activate イベント発生"
End Sub
上のマクロは、ワークシートがアクティブになった時に実行するマクロになっています。 Excel がワークシートの「Activate」イベントの発生を捕捉して、自動的にマクロが実行されます。
「Sheet1(Sheet1)」に設定されているマクロなので、ワークシート「Sheet1」がアクティブになるとマクロが自動で実行されると思います。「Sheet1」以外のワークシートを選択して、「Sheet1」を選択し直すとメッセージボックスが表示されると思います。
「Sub」ではなく「Private Sub」から始まるマクロは、「Alt + F8」からは実行出来ないようです。「Alt + F8」で表示されるマクロの一覧リストにも表示されないようです。「Private Sub」から始まるマクロは、マクロから呼び出すマクロということになるようです。
ユーザーからは、「Sheet1」「Sheet2」「Sheet3」の見出しのワークシートのみが存在しているように見えますが、 Excel 側から見ると「Sheet1」「Sheet2」「Sheet3」をオブジェクトとしても認識しているようです。

「Sheet1(Sheet1)」のカッコ内の文字は、ワークシートの見出しの名前になっています。カッコの前の文字は「オブジェクト名」というもので、 Excel の内部的にワークシートに名前が付いているようです。
ワークシートの見出しの名前を「A」「B」「C」と変更すると、オブジェクト名は変化せずカッコ内の文字が変更されると思います。

以下のようにカッコ内の文字が変更されました。ワークシートの見出しの文字と一致しています。

ワークシートを追加した場合は、プロジェクトエクスプローラーにもワークシートオブジェクトが追加されると思います。ワークシート「D」を追加してみます。

ワークシート追加後に、プロジェクトエクスプローラーを見てみると、「Sheet4(D)」という名前のワークシートオブジェクトが追加されています。「Sheet4」というオブジェクト名が自動的に命名されました。

Sheet2 ( Sheet2 ) '---(4)
「Sheet2」もワークシートオブジェクトなのでマクロが記述されているかもしれません。
Sheet3 ( Sheet3 ) '---(5)
「Sheet3」もワークシートオブジェクトなのでマクロが記述されているかもしれません。
ThisWorkbook '---(6)
ワークブック 1 つにつき、 1 つの「ThisWorkbook」が存在しているようです。「ワークブックオブジェクト」というものだと思います。ワークブックオブジェクトにはマクロを設定可能なので、マクロが記述されているかもしれません。
「ThisWorkbook」をダブルクリックすると、以下の画像のように、右側のウィンドウにマクロのコードが記述されているかもしれません。

以下のマクロが「ThisWorkbook」に設定されています。ワークブック保存前に自動で実行するマクロが設定されているようです。ワークブックの「BeforeSave」イベント発生時に自動で実行されるマクロになっています。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "ブックの保存前に発生するイベントです。"
End Sub
ワークブックを保存しようとすると、以下のメッセージボックスが表示されると思います。

[ - ]標準モジュール '---(7)
ワークブック 1 つにつき、 1 つの「標準モジュール」階層が存在しているようです。フォルダのようなものなので、これ自体には、マクロは記述されていないと思います。
Module1 '---(8)
「標準モジュール」が作成されているようです。マクロは標準モジュールに記述することが多いので、マクロが記述されているかもしれません。
「Module1」をダブルクリックすると、右側のウィンドウにマクロが記述されているかもしれません。

以下のマクロが「Module1」に記述されています。「Sub」から始まるマクロなので、「Alt + F8」のショートカットキーからも実行できると思います。
Sub マクロ1()
MsgBox "「マクロ1」を実行しました。"
End Sub
標準モジュールは、プロジェクトエクスプローラーから、新規追加、削除の操作が行えます。複数の標準モジュールを作成することも出来るので、それぞれにマクロが記述されているかもしれません。
ワークブックを複数開いている場合のプロジェクトエクスプローラーの画面は、以下の画像のようになります。

パスワードでロック
VBAProject にパスワードのロックが掛かっている場合は、 VBAProject を開いて中を見ることが出来ません。マクロの実行は出来ますが、編集を行うことが出来ないようです。

マクロの「編集」ボタンが押せないようになっていますね。

VBAProject の表示用のロックを設定する場合は、 VBE の「ツール > VBAproject のプロパティ」で表示されるダイアログボックスの「保護」タブにパスワードを設定します。

「プロジェクトを表示用にロックする」にチェックを入れて、プロジェクトのプロパティ表示のためのパスワードを設定します。

テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
「Alt + F8」のショートカットキーで Excel のマクロを実行する方法を書き始めましたが、「どんなマクロが保存されている?」の方が長くなってしましました。
以上、閲覧ありがとうございました。