ExcelでVBAを使ってThisWorkbook.Closeを実行しても、Excel自体のウィンドウが残ることがあります。これはVBAコードがワークブックだけを閉じているためで、アプリケーション全体を終了させるには別の方法が必要です。この記事では、Excelを完全に閉じるVBAコードと注意点を解説します。
ThisWorkbook.Closeだけではアプリケーションは閉じない理由
ThisWorkbook.Closeは対象のワークブックを閉じますが、Excelアプリケーション自体は終了しません。複数のブックを開いている場合や、アプリケーションが起動中のままの状態では、ウィンドウが残ります。
また、保存確認のダイアログが出る設定の場合、自動的に閉じることができず、ユーザー操作が必要になります。
Excelアプリケーション全体を閉じるVBAコード
ワークブックとExcel全体を完全に閉じたい場合は、Application.Quitを使用します。例。
Sub CloseWorkbookAndExcel()
Application.DisplayAlerts = False ' 保存確認を非表示にする
ThisWorkbook.Close SaveChanges:=True ' 必要に応じてTrue/False
Application.Quit
End Sub
このコードでは、DisplayAlertsをFalseにすることで保存確認のダイアログを抑制し、ThisWorkbookを閉じた後にApplication.QuitでExcel全体を終了します。
注意点とおすすめの使い方
Application.Quitを使うと、他の開いているブックも閉じられるため、重要なデータが未保存の場合は事前にバックアップを取ることが重要です。
また、自動で閉じるコードをボタンやイベントに組み込む場合は、意図しないデータ損失を防ぐために、ユーザーに確認を促すメッセージを表示するのが安全です。
まとめ
Excel VBAでThisWorkbookを閉じるだけでは、アプリケーションは残ることがあります。ワークブックとExcel全体を完全に終了させたい場合は、Application.Quitを使用し、DisplayAlertsで保存確認を管理するのが基本です。
コード実行前に重要データを保存しておくこと、他のブックが開いている場合の影響を理解しておくことが、VBAで安全にExcelを閉じるためのポイントです。

コメント