ワークブックを保存せずに閉じる

にメンテナンス済み

VBA を使用している際、別の Excel ファイルからデータを取得したいケースはよくあるかと思います。

そういった場合、Workbooks.Openメソッドを使って Excel を開きデータを取得するのが一般的かと思いますが、ファイルを閉じる場合はどうでしょうか。

参照するだけであれば、ファイルを保存して閉じる必要はなく、単に閉じるだけで十分です。

不必要に上書き保存してしまうと、誤ってデータを書き換えた上で保存してしまう可能性もあります。

そこで今回は、VBA を使用してワークブックを保存せずに閉じる方法について解説します。

使用するコード

Workbookクラスに用意されているCloseメソッドのパラメータとして、saveChangesFalseに指定することで保存せず閉じることが可能です。

Workbook.close saveChanges:=False

サンプルコード

アクティブなワークブックを保存せず閉じる

マクロを実行した結果を別のワークブックに反映させる場合など、一時的に開いたワークブックを保存せずに閉じる必要がある場合に使用できます。

ActiveWorkbook.Close savechanges:=False

特定の Excel ファイルを保存せず閉じる

マクロで自動的に生成された一時ファイルを閉じる場合など、保存する必要のないファイルを閉じる場合に使用できます。

Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx")

wb.close saveChanges:=False

すべての Excel ファイルを保存せず閉じる

強制的にすべてのファイルを閉じることになります。変更が保存されないため、データが失われる可能性があることに注意してください。必要な場合は、適宜処理の中で保存を行うようにしましょう。

Dim wb As Workbook
For Each wb In Application.Workbooks
    wb.Close savechanges:=False
Next wb

活用例

この方法を使えば、一時的なファイルを扱う場合や、誤ったデータを保存することを避けたい場合など、様々な場面で役立ちます。例えば、以下のような場合に使用することができます。

  • マクロの処理中に一時的なファイルを生成する場合
  • ファイルを開いたまま、誤ってデータを編集してしまった場合
  • ファイルを保存しないで閉じるためにショートカットキーを割り当てたい場合
#Excel #VBA