はじめに
VBAで作業をしていると、
「処理が終わったのでファイルを閉じたい」
「保存せずに閉じたい」
「複数のブックを順番に閉じたい」
そんな場面がよくあります。
ここでは、ファイルを閉じる基本の使い方と、
実務で安心して使える書き方を解説します。
まずはコードを確認(もっともシンプル)
ActiveWorkbook.Close
開いているブックを閉じます。
保存するかどうかは Excel が確認してくれます。
保存するかどうかを指定して閉じる
保存して閉じる
ActiveWorkbook.Close SaveChanges:=True
保存せずに閉じる
ActiveWorkbook.Close SaveChanges:=False
実務では SaveChanges を明示する ことで、
予期せぬ保存ダイアログを防げます。
変数に入れたブックを閉じる
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Data\report.xlsx")
wb.Close SaveChanges:=False
外部ファイルを扱うときの基本パターンです。
具体的な例で理解する
開いたブックを処理して閉じる
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Data\report.xlsx")
wb.Sheets("集計").Range("A1").Value = "更新日:" & Date
wb.Close SaveChanges:=True
処理 → 保存 → 閉じる の流れをまとめた実務向けの例です。
複数のブックをすべて閉じる
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
wb.Close SaveChanges:=False
End If
Next
自動処理の最後に“後片付け”として使えます。
指定した名前のブックだけ閉じる
Workbooks("report.xlsx").Close SaveChanges:=False
名前がわかっている場合のシンプルな方法です。
注意点(実務で気をつけたいこと)
- 保存ダイアログが出ると処理が止まる
→ SaveChanges:=True/False を明示すると安全。
- ThisWorkbook を閉じるとコードが止まる
→ 自分自身のブックは閉じないように注意。
- ネットワーク保存は時間がかかる
→ 保存後すぐに Close するとエラーになることも。
- 開いていないブックを Close するとエラー
→ Workbooks(“名前”) の存在チェックが必要。
応用:安全にブックを閉じる関数
Function CloseSafe(wb As Workbook, Optional save As Boolean = False) As Boolean
On Error GoTo ErrHandler
wb.Close SaveChanges:=save
CloseSafe = True
Exit Function
ErrHandler:
CloseSafe = False
End Function
複数の処理で使い回せる“安全なクローズ関数”です。
まとめ
- Close でブックを閉じられる
- 保存するかどうかは SaveChanges で指定
- 変数に入れたブックを閉じるのが実務で基本
- 複数ブックのクローズや名前指定も可能
- 保存ダイアログを出さない工夫が大切
ファイルを閉じる処理は、
作業の“しめくくり”を静かに整える大切なステップです。

ブックを丁寧に閉じることで、
処理全体がすっと整い、安心感が生まれます。
VBAは、そんな小さな後片付けもそっと支えてくれます。

閉じるって、なんだか一日の終わりみたいで落ち着くね。
VBAなら、その瞬間もやさしく手伝ってくれるよ。

コメント