VBA ワークブックを閉じる

はじめに

Excel VBA マクロでワークブックを閉じる方法を紹介します。

Workbook.Close メソッドから、ブックを閉じます。保存してから閉じることもできます。

Application.Quit メソッドから、エクセルを閉じます。

ブックを開くには「ワークブックを開く」をご覧ください。
  • 目次
    • ブックを閉じる
    • すべてのブックを閉じる
    • Excel を閉じる

ブックを閉じる

Workbooks の引数に名前を指定すると、そのブックを閉じられます

ブック名「Book1.xlsx」のブックを閉じるには Workbooks("Book1.xlsx").Close を入力します。

Workbooks("Book1.xlsx").Close ' ブック「Book1.xlsx」を閉じる
ThisWorkbook.Close            ' VBA を実行しているブックを閉じる

ブックが編集中のときは確認メッセージが表示されます。

2

保存したファイル名がブック名になります。

すでに開いているブックと同じファイル名で保存できません。Excel の仕様で同じ名前のブックを同時に開くことはできません。

確認メッセージを表示しないで閉じる

引数「SaveChanges」から、メッセージを表示するか指定できます。

説明
省略編集中なら確認メッセージを表示します。
True変更を保存して閉じます。
False保存しないで閉じます。

ブックが編集していないかどうかは Workbook.Saved を入力します。True なら編集していません。False なら編集中です。

Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")

Dim b As Boolean
b = wb.Saved ' 編集していないか
Debug.Print(b)

Call wb.Close(SaveChanges:=True)  ' 変更を保存して閉じる
Call wb.Close(SaveChanges:=False) ' 保存しないで閉じる

ファイル名を変更して閉じる

引数「FileName」から、新規作成したブック名を指定できます。保存済みのブックではこの引数は無視されます。

Dim wb As Workbook
Set wb = Workbooks.Add ' ブックを作成

wb.Sheets(1).Range("A1").Value = "編集" ' 編集

Call wb.Close(True, "D:\FileName.xlsx") ' 新規ブックのブック名を付けて閉じる
Call wb.Close(True, "FileName.xlsx")    ' 新規ブックの既定の保存先に保存して閉じる

ファイル名だけ指定したときの保存先はカレントディレクトリです。カレントディレクトリの既定値は、Excel のオプションから保存の「既定のローカルファイルの保存場所」です。

default-path
カレントディレクトリは、ファイルを開くダイアログや名前を付けて保存ダイアログを使用すると変更されます。このため必ず絶対パスを使用します。

すべてのブックを閉じる

すべてのブックを閉じるには Workbooks.Close を入力します。

Workbooks.Close ' すべてのブックを閉じる

編集中のブックがあるときは確認メッセージが表示されます。

3

Workbooks.Close には引数がありません。

[キャンセル] をクリックすると「エラー 1004 アプリケーション定義またはオブジェクト定義のエラーです。」が発生します。

すべてのブックを閉じると空のブックが表示されます。これを表示させないためには Excel を閉じる必要があります。詳しくは下記の「Excel を閉じる」をご覧ください。

確認メッセージを表示しないで閉じる

Workbooks はコレクションになっているので、これをループしてすべてのブックを取得できます。

VBA を実行しているブックを閉じると処理が停止されるので、最後に自身のブックを閉じます。

Dim wb As Workbook
For Each wb In Workbooks
    If wb.Name <> ThisWorkbook.Name Then
        Call wb.Close(True)  ' すべて保存して閉じる
        Call wb.Close(False) ' すべて保存しないで閉じる
    End If
Next

' 最後に VBA を実行しているブックを閉じる
Call ThisWorkbook.Close(True)
Call ThisWorkbook.Close(False)

Excel を閉じる

空のブックを表示しないですべてのブックを閉じるには Excel を閉じます。

Excel を閉じるには Application.Quit を入力します。

Application.Quit

ブックが編集中のときは確認メッセージが表示されます。

3

確認メッセージを表示しないで閉じる

メッセージを表示させないためには、事前にすべてのブックを保存するか、保存済みにしておきます。

Dim wb As Workbook
For Each wb In Workbooks
    wb.Save         ' すべてのブックを上書き保存
    wb.Saved = True ' 保存しないで保存済みにする
Next

Application.Quit ' Excel を閉じる
ブックの保存について詳しくは「ワークブックを保存する」をご覧ください。