[ Excel-VBA ] ThisWorkbook.Close と Application.Quit の違い

Pocket

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
参考
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *