ブックを閉じる・保存する

初級VBA

はじめに

 ブックを閉じるには、WorkbookオブジェクトのCloseメソッドを使用します。
 また、保存・名前を付けて保存するには、Save, SaveAs メソッドを使います。
 
 尚、ファイル操作なので変更がある場合などは、プログラム実行中でもダイアログが出ます。
 ダイアログを出さないようにするには、予め保存して閉じるのか、保存せずに閉じるのかを決めておく必要があります。
 
 当然ですが、ブックを閉じるには対象となるブックを指定する必要があります。
 開いているブックが1つだけの場合は、ThisWorkbook ActiveWorkbook を使う事ができます。

 ブックの参照方法については、以下を参考にしてください。
 ・ブックの参照

ブックを閉じる(保存なし)

 ブックを閉じるには、Close とします。

 Thisworkbook.Close 

 内容に変更があった場合、確認ダイアログが表示されます。
 変更を保存せずに閉じたい場合は、以下のようにします。

 Thisworkbook.Close SaveChanges:=False

ブックを保存して閉じる

 ブックの変更を保存して閉じる場合には、Closeにオプションを指定する方法と、Save してから Close する方法があります。 どちらを使っても結果は同じです。

 Thisworkbook.Close SaveChanges:=True

 または、以下のように2行で書いても構いません。

 Thisworkbook.Save	
 Thisworkbook.Close 

 尚、開いているブックが1つの場合、Close で終了するとExcelが空のブックのまま終了しない状態となります。
 Excel自体も終了したい場合は、
 Application.Quit を使います。
 
 空ブックを残さず終了する方法の詳細については以下を参考にしてください。
 ・空のブックを残さずに終了する

 Thisworkbook.Save	
 Application.Quit 

ブックに名前を付けて保存

 ブックに名前を付けて保存する場合は、SaveAs を使いますが、引数にブック名をフルパスで渡します。
 もし同じ名前のファイルがあれば、そのファイルに上書きするか確認ダイアログが出ます。
 確認ダイアログを表示させずに上書きさせたい場合は、
 Application.DisplayAlerts = False
 として、アラート表示を一時的に、False にします。

 Application.DisplayAlerts = False
 Thisworkbook.SaveAs "C:\temp\Book2.xlsm"
 Application.DisplayAlerts = True

 この時、現在のブック名(ファイル名)は新しい名前に変更されます。

まとめ

 ブックを閉じるプログラムを組む場合は、予め保存する・しないを決めておいた方が実現的だと思います。
 
 また、名前を付けて保存する(SaveAs)場合は、アラート表示を一時的に False にする事で上書きが強制されますので覚えておくと良いでしょう。

 最後に空ブックのExcelを残したくない場合は、Application.Quit を使いますが、他にブックが残っている場合は問題が発生します。
 以下に対処するためのサンプルコードがありますので確認してみてください。
 
 ・空のブックを残さずに終了する

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