Excelブックを閉じる

<< エクセルVBAでブックを開く :前の記事

こちらでは、WorkbooksコレクションオブジェクトCloseメソッドを利用して、Excelブックを閉じる方法について解説しています。

メソッドとは、オブジェクトを操作する命令文のことでオブジェクトの動作になります。 メソッドを利用するにはオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。

オブジェクト名.メソッド名

目次

はじめに

こちらでは、Closeメソッドを利用したExcelのブックを閉じる方法について解説します。

利用するメソッドについて

今回利用するメソッドは以下になります。

Closeメソッドとは

WorkbooksコレクションオブジェクトのCloseメソッド指定したブックを閉じます

Workbooks(ブック名).Close(SaveChanges, Filename, RouteWorkbook)

指定したブックを閉じるサンプルコード

今回の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ブックを上書き保存する >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

ExcelのVBAについてのQ&A掲示板

↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。

VBAのIE操作入門

↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。

目次

VBAのステートメント

こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのオブジェクト

こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのプロパティ

こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのメソッド

こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。

VBAのイベント

こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。