ワークブックを閉じる
VBA を活用することで、特定の Excel ブックを閉じることができます。
このページでは、VBA でワークブックを閉じる方法を紹介します。
Close メソッド
VBA でワークブックを閉じるには、WorkbookオブジェクトのCloseメソッドを使います。
ThisWorkbook.Close
このコードを実行すると、マクロを実行しているワークブック自身が閉じられます。
未保存の変更がない場合はそのまま閉じられますが、未保存の変更がある場合は、Excel が保存するかどうかを尋ねるダイアログボックスが表示されます。
ThisWorkbookはマクロが記述されているワークブック、ActiveWorkbookは現在アクティブなワークブックを指します。閉じたい対象に合わせて使い分けてください。
保存の確認を避ける
保存の確認を避けてワークブックを閉じる場合は、Close メソッドに引数を渡すことで可能です。
Sub CloseWithoutPrompt()
' アクティブなワークブックを保存せずに閉じる
ActiveWorkbook.Close SaveChanges:=False
End Sub
このコードでは、SaveChanges引数にFalseを指定しています。これにより、ワークブックに未保存の変更があっても保存せずに閉じます。
ワークブックを保存しないで閉じる方法については、以下のページで詳しく解説しています。
変更を保存して閉じる
反対に、変更を保存してからワークブックを閉じたい場合は、SaveChanges引数にTrueを指定します。
Sub CloseAndSave()
' アクティブなワークブックを保存して閉じる
ActiveWorkbook.Close SaveChanges:=True
End Sub
このコードを実行すると、変更が保存された後にワークブックが閉じられます。
特定のワークブックを閉じる
特定のワークブックを閉じたい場合は、そのワークブックのオブジェクトに対して Close メソッドを呼び出します。
Sub CloseSpecificWorkbook()
' 特定のワークブックを変数に格納
Dim wb As Workbook
Set wb = Workbooks("Example.xlsx")
' 特定のワークブックを閉じる
wb.Close SaveChanges:=False
End Sub
このコードでは、“Example.xlsx”という名前のワークブックを閉じています。この方法を使用すれば、アクティブでないワークブックでも閉じることができます。
Close メソッドの引数
Closeメソッドの引数は以下のとおりです。いずれも省略可能です。
| 引数 | 説明 |
|---|---|
SaveChanges | Trueで保存して閉じる、Falseで保存せずに閉じる。省略時は保存確認のダイアログが表示される |
Filename | 変更を保存する際のファイル名 |
RouteWorkbook | ワークブックを回覧する場合の送付設定 |
まとめ
VBA の Close メソッドを使用することで、Excel のワークブックをプログラム的に閉じることができます。
引数を適切に使用することで、保存の確認を避けたり、変更を保存して閉じたり、特定のワークブックをターゲットにすることも可能です。
Closeメソッドを使うことで、VBA で取り扱えるワークブックの範囲が広げることができます。