【VBA】Excelマクロでファイル(ブック)を閉じる方法

VBA
スポンサーリンク

閉じたいファイルを指定して、Closeと書くだけです。

ファイルを開く方法は以下の記事で解説しています。

Closeでファイルを閉じる

以下の2つのファイルを開いているとします。

プログラム実行ファイル:コードを書くファイル
“Book1.xlsx”:閉じたいファイル

プログラム実行ファイルに、次のコードを書きましょう。↓

Sub test()

Workbooks("Book1.xlsx").Close

End Sub
ファイルを閉じるコード

Workbooks(“ファイル名”)で閉じたいファイルを指定してCloseです。

ファイルの指定方法は、Excelマクロでのセル,シート,ファイル指定で解説しています。

変更を保存して閉じる

Sub test()

Workbooks("Book1.xlsx").Close savechanges:=True

End Sub

savechangesで、変更を保存するか、保存しないかを決めることができます。

True:保存して閉じる
False:保存しないで閉じる
変更を保存して閉じるコード

savechangesのようなプログラムの条件のことを引数といいます。

=の手前にコロン「:」があるので注意してください。

savechangesを設定しないと以下の画面が現れます。

変更の保存を確認する画面

これが出てくるとプログラムが止まってボタンの選択待ちになります。

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

Sub test()

savePath = "C:\Users\HTOM\Desktop"
saveName = "Changed.xlsx"
Workbooks("Book1.xlsx").Close savechanges:=True, Filename:=savePath & "\" & saveName

End Sub

引数Filenameに保存後のパスを書きます。

ファイル名を変更するコード

“Book1.xlsx”の変更を保存して、”Changed.xlsx”としてデスクトップに保存しました。

保存前後の画面
保存先を指定するコード

上記のコードでは、保存先フォルダのパスと保存後ファイル名とを分けています。

こうすれば、コードを修正するときに便利です。

フォルダのパスってどうやったらわかるの?

アドレスバーをクリックすると、そのフォルダのパスが全選択されます。

ファイルのパスをコピペする方法

これをsavePathにコピペしてください。

あとはsaveNameを好きな名前に変更するだけですね。

savechangesがFalseだと、

そもそも変更を保存されないので注意してください。

全てのファイルを閉じる

Sub test()

Workbooks.Close

End Sub

Workbooksと書いて、ファイル名は指定せずにCloseです。

これで全ファイルを閉じられますが、変更を保存しないので注意しましょう。

全ファイルを保存してから閉じる方法

Sub test()

For Each wb In Workbooks
    wb.Save
Next wb
Workbooks.Close

End Sub

For Eachで全ファイルを1つずつ操作できます。

全ファイルを保存してから閉じるコード

Nextで次のファイルに移り、全ファイル処理したらCloseが実行されます。

ファイル保存についてはExcelマクロでファイルを保存する方法をご覧ください。

Excelを終了する方法

Closeで全ファイルを閉じても、カラのExcelファイルが表示されたままになります。

なので、Excelのアプリ自体を終了させましょう。

Sub test()

Application.Quit

End Sub

ApplicationとはExcelのアプリ自体のことです。

QuitでExcelを終了します。

このときCloseを使わなくともファイルが閉じられます。

全ファイルを保存してからExcelを終了する方法

Sub test()

For Each wb In Workbooks
    wb.Save
Next wb

Application.Quit

End Sub

全てのファイルをSaveで保存してからQuitで終了すれば、カラのファイルが残ることもありません。

これが一番長いけど丁寧な処理です。

まとめ:ファイルを自動で閉じられるようになろう

今回はVBAでファイルを閉じる方法について解説しました。

ファイルを開いて閉じることができれば、あとは作業内容をプログラム化するだけです。

コメント

タイトルとURLをコピーしました