VBA 任意のエクセルファイルを閉じる方法 Close 確認メッセージ非表示

EXCEL VBAを利用して、EXCELのファイルを閉じる方法を紹介していきます。
ファイルを閉じる際の、確認メッセージを表示させない方法も紹介します。
それでは早速始めていきましょう。

任意のエクセルファイルを閉じる

任意のブックを閉じる

まず一番シンプルに、エクセルファイルを閉じる方法を紹介していきます。
エクセルファイルを閉じるには、「Close」を利用しましょう。

WorkBooks(任意のブック名).Close

 

例を見てみます。
あらかじめ「D:\vba\a.xlsx」という下記のエクセルファイルを開いている状態から、閉じる処理を行います。

「ブックを閉じる」ボタンの処理を記載しています。

Private Sub cmdClose_Click()
    '任意のエクセルブックを閉じる
    Workbooks("a.xlsx").Close
End Sub

「a.xlsx」のブックが閉じられたことが確認できました。
ここまでが最も基本的な使い方になります。

自分自身の閉じる

補足ですが、マクロを記載しているブック自身を閉じたい場合は、自分自身のブック名を指定する方法とThisWorkbook.Closeと記載する方法があります。

  • Workbooks("Excelファイルを閉じる.xlsm").Close
  • ThisWorkbook.Close

例を記載していきます。

Private Sub cmdClose_Click()
    '自分自身を閉じる
    'Workbooks("Excelファイルを閉じる.xlsm").Close
    ThisWorkbook.Close
End Sub

結果
ブックが閉じられました。

上記のようにEXCELブックが最後の1つの場合、閉じると空のEXCELウィンドウが残ってしまいます。
この状態を回避するにはCloseではなく、Application.Quitを利用すると終了できます。

Private Sub cmdClose_Click()
    '自分自身を閉じる
    'ThisWorkbook.Saved = True ' メッセージを表示せずに閉じる
    Application.Quit
End Sub

 

確認メッセージを表示させず閉じる

マクロからブックを閉じる際に変更があると、確認メッセージが表示されます。

この確認メッセージを表示させないようにする方法がいくつかあるので紹介していきます。

  • Closeのパラメータ SaveChangesを利用する方法
  • Savedプロパティを強制的に変更する方法
  • Application.DisplayAlerts マクロ実行中のメッセージを停止する方法

 

Closeのパラメータ SaveChangesを利用する方法

Closeには、パラメータが3つ存在しますが、1つ目のSaveChageを指定しましょう。
True:保存して終了
False:保存せずに終了

Private Sub cmdClose_Click()
    'エクセルを開いて変更を加える
    Workbooks.Open ("D:\vba\a.xlsx")
    Workbooks("a.xlsx").Sheets("Sheet1").Cells(4, 3).Value = "変更しました。"
    
    '任意のエクセルファイルを閉じる
    Workbooks("a.xlsx").Close (False)
End Sub

上記の例では、変更した内容を保存せずに閉じています。
保存させたい場合はTrueを利用しましょう。

 

Savedプロパティを強制的に変更する方法

Savedプロパティとは、ブックが変更されているのかされていないのか、ブックの状態を示すプロパティになります。
Trueであれば、変更がない状態
Falseであれば、変更がある状態
という意味になります。

注意が必要なのは、あくまで状態を示すプロパティであるので、実際に保存することはできません。

このプロパティを強制的に、TrueにすることでExcelに変更はなかった状態にすることが可能となるので、メッセージを表示さず終了させることができます。
逆に変更をしていなくても、Falseにすると確認メッセージを表示させることができます。

Private Sub cmdClose_Click()
    'エクセルを開いて変更を加える
    Workbooks.Open ("D:\vba\a.xlsx")
    Workbooks("a.xlsx").Sheets("Sheet1").Cells(4, 3).Value = "変更しました。"
    
    '任意のエクセルファイルを閉じる
    Workbooks("a.xlsx").Saved = True
    Workbooks("a.xlsx").Close
End Sub

 

Application.DisplayAlerts マクロ実行中のメッセージを停止する方法

最後にマクロの設定自体を変更する方法を紹介します。
Application.DisplayAlerts = False とすることで、EXCEL自体の設定を変更することができます。

Private Sub cmdClose_Click()
    'エクセルを開いて変更を加える
    Workbooks.Open ("D:\vba\a.xlsx")
    Workbooks("a.xlsx").Sheets("Sheet1").Cells(4, 3).Value = "変更しました。"
    
    '任意のエクセルファイルを閉じる
    Application.DisplayAlerts = False
    Workbooks("a.xlsx").Close
    Application.DisplayAlerts = True
End Sub

 

まとめ

今回は任意のエクセルブックを閉じる方法を紹介しました。

マクロを利用する際に、よく使う技術になるので是非参考にしてみてください。

 

EXCEL VBAの記事一覧

おすすめの記事