こんにちは、Ryoです。
VBAで処理を行う上で頻繁に行うこととしては、ブックのアクティブ状態切替えがあります。
データ読込、書き込みや結果を別ファイルへ出力した後に元のファイルに戻るなど様々な場面で使用しますので、今回はブック(ファイル)をアクティブにする方法について書いてみたいと思います。
1.サンプル概要
ブックをアクティブにする内容なので、画像で説明するほどではないと思いますが、今回は「Book1」「Book2」を用意し、アクティブ状態を切替えます。
Excelを起動して最初に開いたファイルが「Book1」、次に新規作成したものが「Book2」となっており、現在は「Book2」がアクティブ状態にある前提で進めます。
2.サンプルコード
ブックをアクティブにするにはActivateメソッドを使います。
これは指定したブックをアクティブにするメソッドです。
オブジェクト.Activate
構文としてはこれだけなのですが、コード記述はいくつかの方法がありますので以下3通りのサンプルを書いています。
◆方法1・・・ブック(ファイル)の直接指定
Sub Sample1() Workbooks("Book1").Activate End Sub
これはアクティブにしたいブックを直接コード内に記述する場合です。
対象とするブック自体が少なく、切替指定頻度も多くなければ特に問題ないと思いますので、方法として一番使用頻度が高いのではないかと思います。
◆方法2・・・変数を使いブック(ファイル)の参照先を指定
Sub Sample2() Dim Ini_book As Workbook Set Ini_book = Workbooks("Book1") Ini_book.Activate End Sub
変数Ini_bookをワークブックとして宣言し、「Book1」を変数に代入(Set)します。
後はIni_Bookはワークブックオブジェクトなので、Ini_book.Activateの様に指定すればアクティブにしてくれます。
方法1に比べて面倒な方法なのですが、切替対象となるブック(ファイル)が多く、切替頻度も多い場合は最初に変数に代入しておき、このような方法でアクティブ指定した方が結果的には記述も楽だったりしますので、その場合に使える方法かと思います。私も実運用上ではこの方法が多いですね。
◆方法3・・・最初に開いたブック(ファイル)をアクティブ
Sub Sample3() Workbooks(1).Activate End Sub
サンプル概要で少し触れていますが、Excel起動時に最初に開いたブック(ファイル)のインデックス番号は「1」になります。
その為、Workbooksプロパティのインデックス番号として「1」を指定する(Workbooks(1).Activate)と最初に開いたブックをアクティブにすることが出来ますので、知っておくと役に立つと思います。
3.まとめ
アクティブにする指定自体はオブジェクト.Activateだけなのですが、用途に応じて指定の仕方を変えると結果は同じでもコードの記述自体やわかりやすさ(見やすさ)が変わってきますので、使い分けてみるのも良いかと思います。
また、アクティブ/非アクティブをイベントとして処理を実行する方法もありますので、以下の記事にまとめていますからよろしければご参照くださいませ。
以上、ブック(ファイル)をアクティブにする方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo