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

VBA
スポンサーリンク

VBAでファイルを閉じるコードは1行だけです。

誰でも簡単に実装できます。

私はfor文すら知らないプログラミングのド素人からVBAとPythonを独学しました。

会社では通常業務に加えて作業自動化と機械学習をしています。

ファイルを自動で閉じたい
・自動で保存して閉じたい
・一連の事務作業すべてを自動化したい

こんな方におススメの内容です。

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

Closeでファイルを閉じる

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

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

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

Sub test()

Workbooks("Book1.xlsx").Close

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

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

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

1行だけなのか。簡単やな。

変更を保存して閉じる

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でファイルを閉じる方法について解説しました。

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

VBA
スポンサーリンク
HTOMblog

コメント

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