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

VBA

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

Closeでファイルを閉じるコード

変更を保存することもできるので、目的に合わせて使ってみましょう。

Closeでファイルを閉じる

プログラムを実行するファイルとは別で、“Book1.xlsx”というファイルを閉じたいとします。

プログラム実行ファイル:閉じないファイル
Book1.xlsx:閉じたいファイル
Sub test()

Workbooks("Book1.xlsx").Close

End Sub

Workbooks(“ファイル名”)で閉じたいファイルを指定してCloseと書きましょう。
>>Excelマクロでセル, シート, ファイルを指定する方法

変更を保存して閉じる

Sub test()

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

End Sub

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

変更を保存してファイルを閉じるコード

=の手前にコロン「:」があるので注意してください。
もしsavechangesを設定しないと以下の画面が現れます。

ファイルを閉じる際に出てくるポップアップの図

これが出てくるとプログラムが止まってボタンの選択待ちになります。
せっかく自動化しているのに止まるのはナンセンスですよね。

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

Sub test()

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

End Sub

引数Filenameに保存後のパスを書きます。
savechangesがFalseだと、そもそも変更を保存しないので注意してください。

ファイルを閉じる際に名前を変更するコード

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

ファイルに名前を付けて保存した後の図
ファイルを閉じる際にパスと名前を変数にしたコード

上記のコードでは、保存先フォルダのパスと保存後ファイル名とを分けました。
保存先フォルダのパスはアドレスバーをクリックすると簡単にわかります。

アドレスバーからファイルのパスをコピーする図

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

全てのファイルを閉じる

Sub test()

Workbooks.Close

End Sub

Workbooksと書いて、ファイル名は指定せずにCloseです。
これで全ファイルを閉じられますが、変更を保存しないので注意しましょう。

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

Sub test()

For Each wb In Workbooks
    wb.Save
Next wb

Application.Quit

End Sub

For Eachで全ファイルを1つずつ操作できます。
全てのファイルをSaveで保存してからQuitで終了すれば、カラのファイルが残ることもありません。
>>Excelマクロでファイルを保存する方法

まとめ

今回はVBAでファイルを閉じる方法について解説しました。
けっこうシンプルなので、すぐに使えるようになると思います。
ファイルを開いて閉じることができれば、あとは作業内容をプログラム化するだけですね。

コメント

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