データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
横合いから失礼します。ちょっと気になったもので。
>対応については「MacroOptionsメソッド」を利用する事も検討したいと思います。
と書かれておられますが、「MacroOptions メソッド」 ではファンクションキー( F3 等)を設定できません。
ファンクションキーを設定したい場合には、やはり 「OnKey メソッド」 を使うしかないかと思います。
「OnKey メソッド」 を使った対処方法としては、Book がアクティブかどうかを判断してショートカットキーを設定すれば良いので、Workbook_Open() を使わずに Workbook_Activate() を使ってみてはいかがでしょう。
以下、その具体例を書いてみましたが、必要なければ読み飛ばしてください。
<具体例>
両方の Book で Workbook_Open() を削除し、下記を設定します。
("test" の部分は実際に呼び出すプロシージャ名に変更。)
Private Sub Workbook_Activate()
Application.OnKey "{F3}", "test"
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{F3}"
End Sub
<動作>
Book を開いた時(または選択した時)= Active になった時、F3 キーにショートカットキーを設定する。
Book を閉じた時(または他の Book を選択した時)= Deactive になった時、F3 キーに設定したショートカットキーを解除して Excel の初期機能に戻す。
これで、両方の Book をどのような順番で開いたとしても、選択されている(アクティブな)Book で設定されたショートカットキーに関連付けられたプロシージャが起動します。
本来、同一のマクロを設定した2つの Book を対象とするだけならば Workbook_Activate() だけでも良いのですが、対象とする2つの Book のどちらか(あるいは両方)を開いている状態で全く関連のない Book を開くと、その Book も影響を受けてしまいます。
なので、Workbook_Deactivate() を追加しています。
尚、上記の test プロシージャの内容は両 Book 共、
Sub test()
MsgBox ThisWorkbook.Name
End Sub
として、どちらの Book からの起動か確認しています。
(期待通りに動作していれば、ThisWorkbook = ActiveWorkBook のはずですので。)
Excel2013 は持ち合わせていないため、Excel2016 で動作確認しています。
ご参考になれば幸いです。