【マクロVBA】別のブックをアクティブ・現在開いているブックを記憶!ブック順でのアクティブにも対応

ブック操作

ほかのファイル・ブックの値を参照したいときや計算したいときは
別のブックをアクティブにして数値を参照したりコピーする必要があります。

シートのアクティブ方法については別の記事でまとめてますので参考にしてみてください。


別のシートをアクティブにする内容についてはこちら☟

【VBA知識 12】別のシートをアクティブ・選択する方法について ► 独学エクセル塾 (dokugakuexcel.com)

ブックのアクティブ方法はよく使用する機能なので是非参考にしてみてください。

それでは見ていきましょう。




■ブックをアクティブにする仕組み

まずブックをアクティブにする仕組みについて説明します。

対象のブック名でアクティブにする方法
Workbooks("アクティブにしたいブック名").Activate

ブックの順でアクティブにする方法
Workbooks(左から数えてアクティブにしたいブックの番号).Activate

■ブック名を直接プログラムに入力してアクティブにする方法

こちらが1番なじみやすい形です。

ブック名を直接打ち込むプログラムはこのようになります。

Workbooks("アクティブにしたいブック名").Activate

「Workbooks」と.「Activate」の間にシート名を選択するだけです。
その際に「”」で囲うことを忘れないでください。

それでは実践してみましょう。

現在は見本でVBAというファイル名を開いています。


ここで見本で用意した「見本ブック」というファイルをアクティブにしてみましょう。

プログラムはこのようになります。

Sub 指定したブックをアクティブにする()

Workbooks(“見本ブック“).Activate

End Sub

はい、これだけです。
それでは実行してみましょう。

現在は「VBA」というブックを開いているのですが実行すると下図のようになります。

画像では動きがないのでわかりにくいですが「見本ブック」がアクティブになりました。
この状態でセルに文字を入れたりするVBAのプログラムを入れると「見本ブック」のほうで書き込みが実行されます。

■ブックの順番を指定してアクティブにする

今度はブック順を参考にしてアクティブにする方法です。
VBAで数個ファイルを開いて全ブック同じ処理をするときに使えますね。

プログラムの説明についてはこちら

Workbooks(左から数えてアクティブにしたいブックの番号).Activate

こちらも至ってシンプルです。

今回も同じく、VBAというファイル名を開いている状態で
見本で用意した「見本ブック」という2つ目のファイルをアクティブにしてみましょう。

今回は2つ目なのでこのようになります

Workbooks(2).Activate

ではプログラムを打ち込んでみましょう。

Sub 順番にブックをアクティブにする()

Workbooks(2).Activate

End Sub

実行してみると…

2つ目の「見本ブック」がアクティブになりました。

■現在のブック(実行前アクティブだったブック)を記憶してアクティブにする

さらに今回はもう一事例紹介したいと思います。

ブックの移動が増えると実行前のアクティブブックに帰るとき
「Workbooks(“アクティブにしたいブック名”).Activate」で設定していると
ファイル名が変わったらエラーになってしまいます。

例えばですが「VBA1.01」というファイル名にしておいて
改定を加えて「VBA1.02」になったとします。


すると「Workbooks(“アクティブにしたいブック名”).Activate」の方法でプログラムを組んでいた場合すべて
「VBA1.01」から「VBA1.02」に変えなければなりません。

ここで対策として現在開いているブックを変数にセットして
そのファイルに戻りたいときは変数に入っているブック名をアクティブにすれば解決します。

見本プログラムはこのようになります。

Sub 現在のブックを記憶しアクティブにする()

Dim MainBook As Workbook

Set MainBook = ActiveWorkbook

Workbooks(“見本ブック”).Activate

MainBook.Activate

End Sub

これにより現在開いているファイル名を「MainBook」という変数に記録し、
「見本ブック」をアクティブにした後でも
「MainBook.Activate」で初めに開いていたブックがアクティブになります。

この方法だとファイル名が変わっても対応できるようになります。

ちなみに私はこの手法しか使用していません。

⬛︎公式

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

Workbook.Activate メソッド (Excel) | Microsoft Learn

■まとめ

いかがだったでしょうか。
ブック経由で様々な処理ができるようになりましたね。

また各ブックに同じ処理ができるようになるので
同じ仕様ファイルに同じ処理を施す場面ではとても重宝されます。

ぜひ活用してみてください。

では次の記事でお会いしましょう。記事はこちらから☟

【VBA知識 14】文字検索(Find)し、当てはまる行数と列数を変数に格納・検索結果なしエラー対応 ► 独学エクセル塾 (dokugakuexcel.com)

コメント