VBA でエクセルのブックを閉じるには、ThisWorkbook.Close メソッドを使用します。また、Excel 自体を終了させるには Application.Quit メソッドを使用します。ここでは、これらの挙動の違いを掲載しています。
スポンサーリンク
挙動の違い
| メソッド | 動作 |
|---|---|
| ThisWorkbook.Close | メソッドコールで即時にブックをクローズし、その後に記述されているコードは実行されない |
| Application.Quit | 一連のスクリプト実行後にアプリケーション(エクセル) を終了させる |
挙動を確認するサンプルスクリプト
ThisWorkbook.Close と Application.Quit の挙動の違いを確認するサンプルスクリプトになります。詳細はコメントを参照ください。
' ブックをクローズしてからExcelを終了する
Private Sub BookCloseAndApplicationQuit()
' ブックが変更されている場合は強制的に保存する
'用途に合わせて使用する
If (ThisWorkbook.Saved = False) Then
ThisWorkbook.Save
End If
' ブックを終了する
ThisWorkbook.Close
'-----------------------------------------------------
' ☆このメッセージは出力されない
' ☆ブックが終了し、スクリプトも以降実行されなくなる
'-----------------------------------------------------
MsgBox "ブック終了"
If (Workbooks.Count = 1) Then
' 開いているブックが自身のみの場合はExcelを終了させる
Application.Quit
End If
End Sub
' Excelの終了予約をしてからブックをクローズする
Private Sub ApplicationQuitAndBookClose()
If (Workbooks.Count = 1) Then
' 開いているブックが自身のみの場合はExcelを終了させる
Application.Quit
End If
'-----------------------------------------------------
' ☆ このメッセージは出力される
' ☆ 一連のスクリプトの実行完了を待ってExcelは終了する
'-----------------------------------------------------
MsgBox "Excel終了予約"
' ブックを終了する
ThisWorkbook.Close
End Sub