この記事では、VBAマクロでブックを閉じる(確認なしで保存しない:保存する:メッセージ選択も)方法について解説していきます。
特に、
・ユーザーの選択に基づいてブックを保存するかかどうかメッセージで出す方法
・アクティブブック以外のすべてのブックを保存せずに閉じる方法
を紹介します!
Workbook.CloseメソッドとApplication.DisplayAlertsプロパティを活用するといいです。
なお、初心者にも分かりやすいように、変数名を少々変わった名称(例:hensuu)で表現していますので、使用時は良い感じの変数名に変えてくださいませ。
それでは、詳しく見ていきましょう!
VBAマクロで他のブックを閉じる(各ブックごとに保存するかどうかをメッセージで確認)方法【Workbook.Close, MsgBox関数】
それではまず、各ブックごとに保存するかどうかをメッセージで確認した上で、ファイルを閉じるコードを確認していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub kakuninShiteHokaBookWoTojiru()
Dim hokaWorkbook As Workbook
Dim intResponse As Integer
For Each hokaWorkbook In Application.Workbooks
If Not hokaWorkbook Is ThisWorkbook Then
intResponse = MsgBox("「" & hokaWorkbook.Name & "」を保存しますか?", vbYesNoCancel + vbQuestion, "ブックの保存確認")
Select Case intResponse
Case vbYes
hokaWorkbook.Close SaveChanges:=True
Case vbNo
hokaWorkbook.Close SaveChanges:=False
Case vbCancel
Exit Sub
End Select
End If
Next hokaWorkbook
End Sub
「コードのAlt+F8を押し、マクロ選択画面でkakuninShiteHokaBookWoTojiru関数を実行します。」
このコードでは、すべての開いているブック(ThisWorkbookを除く)をループで処理し、各ブックに対して「保存しますか?」というメッセージボックスを表示します。
ユーザーが「はい」を選択すれば保存して閉じ、「いいえ」を選択すれば保存せずに閉じます。「キャンセル」を選択した場合は、処理を中断します。
間違って保存しないで閉じないか?のチェックにもなるのでいいですね!
VBAマクロで他のブックを閉じる(アクティブブック以外のすべてのブックを保存しないで閉じる)方法【Workbook.Close】
続いては、アクティブブック以外のすべてのブックを保存せずに閉じる方法について解説していきます。
Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。
Sub subeteNoHokaBookWoTojiru()
Dim workbook As Workbook
Application.DisplayAlerts = False
For Each workbook In Application.Workbooks
If workbook.Name <> ThisWorkbook.Name Then
workbook.Close SaveChanges:=False
End If
Next workbook
Application.DisplayAlerts = True
End Sub
コードのAlt+F8を押し、マクロ選択画面でsubeteNoHokaBookWoTojiru関数を実行します。
このマクロは、アクティブなブック(ThisWorkbook)を除くすべてのブックを閉じます。
なおエクセルデフォルトの保存する・しないのメッセージを省略すべく、DisplayAlertsをFalseに設定して、保存の確認メッセージをスキップします。
作業中のブックに影響を与えないよう、最後にDisplayAlertsをTrueに戻しています。
まとめ VBAマクロで他のファイルを閉じる(上書き保存する・しない:選択も)方法
ここでは、VBAマクロでブックを閉じる(他のファイル:保存する・しない:選択も)方法について確認しました。
マクロをマスターしてさらに快適な生活を送っていきましょう!!(^^)/