VBAで保存して閉じる際にメッセージを表示しない方法|他のブックを閉じる方法も解説

目次

スポンサードリンク

Excel VBAを使ってブックやファイルを保存・終了する際、通常は「保存しますか?」というメッセージが表示されます。しかし、スクリプトで自動処理を行いたい場合はこの確認ダイアログを非表示にして保存処理を完了させたいことがあります。

この記事では、メッセージの表示を抑制してファイルを保存して閉じる方法を紹介します。

VBAでファイルを保存して閉じる際の基本構文

VBAでファイルを保存した上で閉じたいときは、Closeメソッドを呼ぶ際のオプションとして、SaveChanges:=True を指定します。

ThisWorkbook.Close SaveChanges:=True

なお、SaveChanges:=False を指定した場合は、ファイルを保存せずに閉じることができます。

メッセージの表示を抑制する方法

確認ダイアログの表示を抑制したい場合は、Close処理を実行する前に、Application.DisplayAlerts にFalseを設定しておきます。

以下コードは、確認ダイアログを表示せずにファイルを保存、閉じています。ファイルを閉じた後は、再度、Application.DisplayAlerts をTrueに戻しておくと、後続処理で意図せずアラート表示が抑制されることを防げるので安心です。

Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.Close
Application.DisplayAlerts = True

アクティブでない他のブックを閉じる方法

下記サンプルコードでは、Close処理を実行する前に、変数 wb を宣言し、閉じたい対象のブックを指定しています。Workbooks は現在開いているすべてのブックのコレクションです。Workbooks(“ファイル名”) と書くことで、その名前のブックをオブジェクトとして取得できます。取得した処理に対し、閉じる処理を実行しています。

Dim wb As Workbook
Set wb = Workbooks("<閉じたいファイル名を指定>")

Application.DisplayAlerts = False
wb.Close SaveChanges:=True
Application.DisplayAlerts = True

まとめ

DisplayAlerts = False を使うことで、ユーザーに確認を求めることなく自動的に処理を進められます。ただし、そのままにしておくと誤ってデータを保存せず閉じるリスクもあるため、注意して使用しましょう。


Excel VBAのテクニックを幅広く学べるおすすめ書籍
基本の定番ネタから応用的なテクニックまで、網羅的にテクニックを学べる書籍です。Microsoft365/Office2024対応。手元に置いておきたい一冊です。

中級者以上におすすめの書籍
VBAというプログラミング言語を本格的に学びたい人におすすめの書籍です。VBAの言語としての仕組みをしっかり理解したい人に。