空のブックを残さずに終了する

中級VBA

はじめに

 ThisWorkbook.Close で自身のブックを終了した場合、他のブックが開いていない場合、Excel自体は終了せずにブックの無い状態となります。

Sub CloseMacro()
    ThisWorkbook.Close
End Sub

 プログラムでExcel自体も終了したい場合は、Application.Quit を使います。

Excelを終了するコマンド

 Application.Quit を使うと、Excelを終了する事が出来ます。ただ、それまで編集された内容は保存されずに終了しようとするため警告のメッセージが表示されます。

Sub QuitMacro1()
    Application.Quit
End Sub

 警告を出さないようにするには、Application.DisplayAlerts を使えば良いでしょう。
 ただし、この場合保存せずに終了してしまいますので、必要なら保存しておくようにします。

保存した後にExcelを終了するプログラム

 以下のプログラムは、ブックを保存してExcelを終了するプログラムです。もし、ブックが複数開いている場合は一緒に閉じてしまうため、その時は、ThisWorkbook.Close で自己のブックのみ閉じるようにしています。

Sub QuitMacro()
    ThisWorkbook.Save
  
    Application.DisplayAlerts = False
  
    If (Workbooks.Count = 1) Then
        Application.Quit
    Else
        ThisWorkbook.Close
    End If
    
    Application.DisplayAlerts = True
End Sub

まとめ

 ThisWorkbook.Close を利用してブックを終了する場合、Excel自体は終了しないため空ブックの状態となります。
 Excelを終了したい場合は、Application.Quit を使用しますが、ブックの保存はされないため、必要なら事前に保存する必要があります。また、Application.Quit では他のブックが開いていないかを確認する必要があるでしょう。
 複数のブックが開いているかどうかは、Workbooks.Count で調べる事が出来ます。

タイトルとURLをコピーしました