【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つずつ操作できます。

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

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

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

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

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

VBAの次に新しい言語に挑戦したいな。。。

と考えている方にはPythonがおすすめです。勉強方法についても解説しています。

コメント

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