更新日:、 作成日:
VBA ワークブックを閉じる
はじめに
Excel VBA マクロでワークブックを閉じる方法を紹介します。
Workbook.Close メソッドから、ブックを閉じます。保存してから閉じることもできます。
Application.Quit メソッドから、エクセルを閉じます。
ブックを閉じる
Workbooks の引数に名前を指定すると、そのブックを閉じられます
ブック名「Book1.xlsx」のブックを閉じるには Workbooks("Book1.xlsx").Close を入力します。
Workbooks("Book1.xlsx").Close ' ブック「Book1.xlsx」を閉じる
ThisWorkbook.Close ' VBA を実行しているブックを閉じる
ブックが編集中のときは確認メッセージが表示されます。
保存したファイル名がブック名になります。
確認メッセージを表示しないで閉じる
引数「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 のオプションから保存の「既定のローカルファイルの保存場所」です。
スポンサーリンク
すべてのブックを閉じる
すべてのブックを閉じるには Workbooks.Close を入力します。
Workbooks.Close ' すべてのブックを閉じる
編集中のブックがあるときは確認メッセージが表示されます。
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
ブックが編集中のときは確認メッセージが表示されます。
確認メッセージを表示しないで閉じる
メッセージを表示させないためには、事前にすべてのブックを保存するか、保存済みにしておきます。
Dim wb As Workbook
For Each wb In Workbooks
wb.Save ' すべてのブックを上書き保存
wb.Saved = True ' 保存しないで保存済みにする
Next
Application.Quit ' Excel を閉じる
スポンサーリンク