VBA~ワークブックを閉じよう~Excel
ファイルを開く時はWorkbook.Closeメソッドを使います。
書き方
Workbooks("ファイル名").Close
ファイル名は拡張子まで書いてください。
簡単な例
下のコードを実行するとワークブック、サンプル.xlsxが閉じます。ワークブックに変更を加えていた場合閉じる際に保存するかメッセージが表示されるので、どちらかを選びます。
Sub test1() Workbooks("サンプル.xlsx").Close End Sub
メッセージ回避
コードを実行するたびにメッセージが表示されるのが煩わしい場合はパラメーターSaveChangesで保存するかしないかを指定しましょう。保存する場合はTrue,保存しない場合はFalseを指定します。下のコードを実行するとワークブック、サンプル.xlsxを保存して閉じます。
Sub test2() Workbooks("サンプル.xlsx").Close SaveChanges:=True End Sub
エラー回避(ワークブックが開いていないとき)
指定したブックが開いていない場合はエラーが表示されます。
そんな時はメッセージを表示するようにするとエラーが回避できます。下のコードは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