エクセルVBAのCloseメソッドでブックを閉じる方法について解説しています。
<< エクセルVBAでブックを開く :前の記事
こちらでは、WorkbooksコレクションオブジェクトのCloseメソッドを利用して、Excelブックを閉じる方法について解説しています。
メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
こちらでは、Closeメソッドを利用したExcelのブックを閉じる方法について解説します。
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でExcelブックを上書き保存する >>
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
ExcelのVBAについてのQ&A掲示板↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。