Excelブックを閉じる
<< エクセルVBAでブックを開く :前の記事
こちらでは、WorkbooksコレクションオブジェクトのCloseメソッドを利用して、Excelブックを閉じる方法について解説しています。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
目次
はじめに
こちらでは、Closeメソッドを利用したExcelのブックを閉じる方法について解説します。
利用するメソッドについて
今回利用するメソッドは以下になります。- Closeメソッド
Closeメソッドとは
WorkbooksコレクションオブジェクトのCloseメソッドは指定したブックを閉じます。
指定したブックを閉じるサンプルコード
今回のVBAコードはExcelの指定したブックを閉じるマクロになります。
Sub sample()
Workbooks("Book1").Close
End Sub
実行結果
「Book1」ブックを閉じます。
解説
sampleプロシージャのSubステートメントに引数は設定されていません。WorkbooksコレクションオブジェクトのCloseメソッドには、引数が設定されていませんので、ブックに変更がない場合はそのままブックを閉じます。そして、最後はEndステートメントを利用してsampleプロシージャを終了させます。
ブックに変更がなかった場合はそのまま閉じますが、ブックに変更があった場合は以下のように変更したファイルを保存するかどうかを確認するダイアログボックスが表示されますので、ご注意ください。
ブックを保存して閉じるサンプルコード
今回のVBAコードはExcelのブックを保存して閉じるマクロになります。
Sub sample()
Workbooks("Book1").Close SaveChanges:=True
End Sub
実行結果
「Book1」ブックを保存して閉じます。
解説
Closeメソッドには、引数SaveChangesに「True」を設定しています。引数SaveChangesは、設定した値に応じて処理を実行しますので、「True」を設定することでブックの変更を保存して閉じます。また、「False」を設定した場合は、ブックの変更を保存しないため注意が必要です。
また、こちらでは名前付き引数を使用して引数設定していますが、以下のように名前付き引数をつけなくても設定できます。
Sub sample()
Workbooks("Book1").Close True
End Sub
開いている全てのブックを閉じるサンプルコード
今回のVBAコードはExcelの開いている全てのブックを閉じるマクロになります。
Sub sample()
Workbooks.Close
End Sub
実行結果
開いている全てのブックを閉じます。
解説
全てのブックを操作する場合はWorkbooksコレクションオブジェクトを指定します。これにより全てのブックを対象に閉じる処理が行われますが、それぞれのブックに対して変更があった場合は、ダイアログメッセージが表示されます。
注意しなければいけないのは、WorkbooksコレクションオブジェクトのCloseメソッドには引数がありません。先ほどブックの保存で利用した引数SaveChangesを設定してみると以下のようにコンパイルエラーで「コンパイルエラー:引数の数が一致していません。または不正なプロパティを指定しています。」と表示されます。
Sub sample()
Workbooks.Close SaveChanges:=True
End Sub
このように同じメソッドでも対象のオブジェクトによって引数が異なるため、注意が必要です。
まとめ
今回は、WorkbooksコレクションオブジェクトのCloseメソッドを利用して、Excelのブックを閉じる方法について解説しました。次回は、エクセルVBAでExcelブックを上書き保存する方法について解説します。
エクセルVBAのブック操作一覧
次の記事: エクセルVBAでExcelブックを上書き保存する >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。