作業をしていて気づくとExcelファイルがいくつも開いている、ということはよくあります。
一つひとつ保存・閉じるのは手間なので、開いている全ブックを一括で保存、または閉じるマクロを作っておくと便利です。
特に、複数ファイルを開いてチェック作業や転記作業をしているような場面では、作業の終わりに一発で片づけられるこのマクロが重宝します。
開いているすべてのブックを保存・閉じるコード
次のようなコードで、開いている全ブックを対象に一括で操作できます。
Sub SaveAllBooks()
Dim wb As Workbook
' 開いているすべてのブックを順に処理
For Each wb In Workbooks
' 保存されていない場合のみ保存
If wb.Saved = False Then
wb.Save
End If
Next wb
MsgBox "すべてのブックを保存しました。"
End Sub
Sub CloseAllBooks()
Dim wb As Workbook
' 現在のブックを除いて閉じる
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
wb.Close SaveChanges:=True
End If
Next wb
MsgBox "現在のブック以外をすべて閉じました。"
End Sub
このコードでは、SaveAllBooks で保存処理、CloseAllBooks で閉じる処理をそれぞれ実行しています。
ThisWorkbook.Name を除外しているのは、マクロを記述しているブックまで閉じてしまうと実行途中で止まってしまうからです。
実装するメリット
このマクロを導入することで、次のような効果が得られます。
- ファイルの保存漏れを防げる
- 閉じるときの操作がワンクリックで済む
- 定型作業を効率化できる
- 忙しい場面でも安心して作業を終えられる
定期的にExcelファイルを扱う業務であれば、マクロをボタンに登録しておくだけでかなりの時間短縮になります。
まとめ
開いているブックをまとめて処理するマクロは、ファイルをたくさん開いて作業する業務の終了処理にぴったりです。
- 複数ブックを開いている状態で手早く片づけたいとき
- 保存忘れや閉じ忘れを防ぎたいとき
- 業務フローの一部として処理を自動化したいとき
といった場面で活躍します。ぜひ業務の最後に使う「お片付けマクロ」として取り入れてみてください。
