オーロラさんの勉強帳

33歳、未経験からIT業界へ。SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

VBA 再入門36 Closeメソッド ブックを閉じる

目次

Closeメソッド

Closeメソッドは指定したブックを閉じるメソッドです。
指定したブックの編集がすでに保存済みであればブックを閉じますが、編集が保存されていない場合は編集を保存するかどうか確認するメッセージが表示されます。


サンプルコード:Book.xlsxを閉じる

Sub sampleClose()
    Wporkbooks("Book1.xlsx").Close
End Sub


サンプルコード:アクティブなブックを閉じる

Sub sampleClose()
    ActiveWorkbook.Close
End Sub

編集が保存されていないブックをCloseメソッド閉じようとすると
以下の確認メッセージが表示されます。
f:id:auroralights:20210203230416p:plain



以下ではブックの変更を保存して閉じる場合と、ブックの変更を保存せずに閉じる場合のサンプルコードを紹介します。

変更を保存してブックを閉じたい場合

Save/SaveAsメソッドで保存後に閉じる方法

あらかじめSaveメソッドで上書き保存やSaveAsメソッドで別名保存した上でブックを閉じる方法です。


サンプルコード:アクティブなブックを上書き保存後、閉じます。

Sub sampleClose1()
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End Sub


サンプルコード:アクティブなブックを「編集保存済」という名前で別名保存後に閉じます。

Sub sampleClose2()
    ActiveWorkbook.SaveAs Filename:="編集保存済"
    ActiveWorkbook.Close
End Sub


すでにカレントディレクトリに「編集保存済」というブックがある場合は、以下のようなメッセージが表示されます。
f:id:auroralights:20210203231648p:plain

Closeメソッドの引数「SaveChanges」に「True」を設定する方法

Closeメソッドの引数「SaveChanges」は変更を保存するかどうか「True」/「False」で指定することができます。
「SaveChanges」に「True」を指定することで、上書き保存してブックを閉じることができます。
※SaveChagesは省略することもできます。


サンプルコード:上書き保存してブックを閉じる

Sub sampleClose3()
    ActiveWorkbook.Close savechanges:=True
 'ActiveWorkbook.Close True savechangesを省略して書くこともできます。
End Sub

変更を保存せずにブックを閉じたい場合

Closeメソッドの引数「SaveChanges」に「False」を指定することで、変更を保存せずにブックを閉じることができます。


サンプルコード:編集を保存せずにブックを閉じる

Sub sampleClose4()
    ActiveWorkbook.Close savechanges:=False
 'ActiveWorkbook.Close False savechangesを省略して書くこともできます。
End Sub