ここでは、Workbook_BeforeClose イベントハンドラを使って Excel の終了処理をキャンセルするサンプルスクリプトを掲載しています。
スポンサーリンク
イベントハンドラの作成
イベントハンドラを作成するには、下図のように BeforeClose イベントを選択します。

イベントハンドラの作成
エクセルの終了をキャンセルするサンプルスクリプト
Workbook_BeforeClose イベントのパラメータ Cancel に True を設定すると、Excel の終了処理がキャンセルされます。
' Excel ブック終了に呼び出されるハンドラ
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' 開いているエクセルブック数を出力する
Debug.Print Workbooks.Count
If Workbooks.Count = 1 Then
' ブック数が1(自身のみ)の場合は、通常通り終了する
Cancel = False
Else
' 他に開いているブックがある場合は、メッセージを出力し、
' キャンセルフラグに True を設定し終了処理を停止する
MsgBox ("他のブックを閉じてから、このブックを閉じてください")
Cancel = True
End If
End Sub
サンプルの注意事項
エクセルの終了をキャンセルすることとは直接関係ありませんが、上記のサンプル注意が必要な部分があります。それは、既に保存されているブックならばブック数としてカウントされますが、新規に開いた保存前のブックはブック数 ( Workbooks.Count ) としてはカウントされない点です。