OfficeType

VBA~ワークブックを閉じよう~Excel

ファイルを開く時はWorkbook.Closeメソッドを使います。

書き方

Workbooks("ファイル名").Close

ファイル名は拡張子まで書いてください。

簡単な例

下のコードを実行するとワークブック、サンプル.xlsxが閉じます。ワークブックに変更を加えていた場合閉じる際に保存するかメッセージが表示されるので、どちらかを選びます。

Sub test1()
Workbooks("サンプル.xlsx").Close
End Sub

image-01

メッセージ回避

コードを実行するたびにメッセージが表示されるのが煩わしい場合はパラメーターSaveChangesで保存するかしないかを指定しましょう。保存する場合はTrue,保存しない場合はFalseを指定します。下のコードを実行するとワークブック、サンプル.xlsxを保存して閉じます。

Sub test2()

Workbooks("サンプル.xlsx").Close SaveChanges:=True

End Sub

エラー回避(ワークブックが開いていないとき)

指定したブックが開いていない場合はエラーが表示されます。

image-02

そんな時はメッセージを表示するようにするとエラーが回避できます。下のコードはallbookというワークブックオブジェクトを格納する変数を宣言しFor Each allbook In Workbookですべてのワークブックを取得するまで一つずつ繰り返していきます。searchという変数に閉じたいブック名を格納し繰り返しの構文の中でIf文の条件式にallbook.Name = searchで開いている全てのワークブックの中に閉じたいブックがあるか判断しています。ブックがあればIfとEnd Ifの間に書かれたコードを実行するのでサンプル.xlsxというワークブックを閉じてExit Subでコードが終了します。ブックがない場合はIfとEnd Ifの間に書かれたコードは実行しないのでExit Subは実行せずに最後に書かれているMsgBox "指定のブックは開いていません"を実行しブックが存在しないとメッセージを表示しコードが終了します。

Sub test3()

Dim allbook As Workbook
Dim search As String

search = "サンプル.xlsx"

For Each allbook In Workbooks

If allbook.Name = search Then

Workbooks("サンプル.xlsx").Close SaveChanges:=True
Exit Sub

End If

Next

MsgBox "指定のブックは開いていません"

End Sub

image-03