まずCLASSモジュールについてです。
そもそもCLASSモジュールを、「いろいろ宣言・定義をするところ」程度にしか理解してない段階で質問するのも失礼かと思いますが、
Public WithEvents App As Application
はどういう宣言をしているのでしょうか?This Workbookに
Set ObjAppEvent.App = Application
と記述しているのでプロパティの宣言ですか??しかし「= Application」の意味もわからないのでわかりません。
最後に、さらに細かい内容についてです。クラスモジュール内の
Private Sub App_WorkbookOpen(ByVal wb As Workbook)
では、「wb」というワークブックを引数としていますが、どこにもApp_WorkbookOpenに値を渡しているような箇所はありません。「As Workbook」とすればそれは「開こうしているワークブック」のことであるとVBAがわかってくれるのでしょうか?
> Public WithEvents App As Application
> はどういう宣言をしているのでしょうか?
とありますが、『App』の宣言にWithEventsをくっつけています。
Applicationオブジェクトのイベントを検出したいので、
くっつけています。
そうすると、『WorkbookOpen』イベントのサブプロシージャを
書いてイベント処理を行うことができました。
実際の処理は標準モジュールに書きました。
ここではさっき作ったクラスを型にした変数を宣言しています。
Public ObjAppEvent As New AppEvent
です。
標準モジュールでパブリックの変数を宣言をしているので
このマクロ全体から参照することができます。
さらに、Newしているので、この段階(マクロの起動)で
『ObjAppEvent』はインスタンス化されています。
> また実行の流れもよくわかりません。
とありますが、概ねあっていると思います。
ただ、0番目として標準モジュールの
Public ObjAppEvent As New AppEvent
の処理が走っていると僕は考えています。
最後の『wb』の件ですが、ExcelのWorkbookOpenイベントが発生すると
Private Sub App_WorkbookOpen(ByVal wb As Workbook)に
Excelが(あるいはApplication)が、開いたワークブックを
wbパラメータに渡します。こんな風に解釈しています。