ワークブックを保存せずに閉じる
にメンテナンス済み
VBA を使用している際、別の Excel ファイルからデータを取得したいケースはよくあるかと思います。
そういった場合、Workbooks.Open
メソッドを使って Excel を開きデータを取得するのが一般的かと思いますが、ファイルを閉じる場合はどうでしょうか。
参照するだけであれば、ファイルを保存して閉じる必要はなく、単に閉じるだけで十分です。
不必要に上書き保存してしまうと、誤ってデータを書き換えた上で保存してしまう可能性もあります。
そこで今回は、VBA を使用してワークブックを保存せずに閉じる方法について解説します。
使用するコード
Workbook
クラスに用意されているClose
メソッドのパラメータとして、saveChanges
をFalse
に指定することで保存せず閉じることが可能です。
ワークブックを保存せずに閉じる
Workbook.close saveChanges:=False
サンプルコード
アクティブなワークブックを保存せず閉じる
マクロを実行した結果を別のワークブックに反映させる場合など、一時的に開いたワークブックを保存せずに閉じる必要がある場合に使用できます。
アクティブなワークブックを保存せず閉じる
ActiveWorkbook.Close savechanges:=False
特定の Excel ファイルを保存せず閉じる
マクロで自動的に生成された一時ファイルを閉じる場合など、保存する必要のないファイルを閉じる場合に使用できます。
特定のExcelファイルを保存せず閉じる
Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")
wb.close saveChanges:=False
すべての Excel ファイルを保存せず閉じる
強制的にすべてのファイルを閉じることになります。変更が保存されないため、データが失われる可能性があることに注意してください。必要な場合は、適宜処理の中で保存を行うようにしましょう。
すべてのExcelファイルを保存せず閉じる
Dim wb As Workbook
For Each wb In Application.Workbooks
wb.Close savechanges:=False
Next wb
活用例
この方法を使えば、一時的なファイルを扱う場合や、誤ったデータを保存することを避けたい場合など、様々な場面で役立ちます。例えば、以下のような場合に使用することができます。
- マクロの処理中に一時的なファイルを生成する場合
- ファイルを開いたまま、誤ってデータを編集してしまった場合
- ファイルを保存しないで閉じるためにショートカットキーを割り当てたい場合
#Excel
#VBA