ThisWorkBookとActiveWorkBookの違い

ThisWorkBookとActiveWorkBookの違い

VBAでブックを参照する際に、「現在利用中のブック」を参照したいことがあります。
そのときに、ThisWorkBookとActiveWorkBookのどちらを使えばよいか分からないことがあります。

簡単に整理すると、
ThisWorkBookは、VBAコードが記述されているブックのことを指します。
ActiveWorkBookは、現在表示されているブックのことを指します。
どちらもWorkBookオブジェクトです。

ThisWorkBook

上記の通り、ThisWorkBookは、VBAコードが記述されているブックのことを指します。

マクロを保存するブックには大きく3種類あります。
Excelマクロ有効ブック(*.xlsm、*.xls)と、アドイン(*.xlam、*.xla)と、個人用マクロブック(personal.xlsb)です。
これらの中でThisWorkBookが指すものは、それぞれのブックやアドインになります。

用途としては今処理中のコードのブックはどれか、ということを取得したい場合に利用します。

ActiveWorkBook

上記の通り、ActiveWorkBookは、現在表示されているブックのことを指します。

例えば、Book1.xlsx、Book2.xlsx、Book3.xlsxの3ファイルを開いている場合に、Book3.xlsxを現在表示しているとします。

その場合のActiveWorkBookはBook3.xlsxになります。

なお、ブックを開いていない場合やサブウィンドウが開いている場合はNothingになります。


通常はActiveWorkBookを使う

セルの参照などを行うようなExcelに閉じた処理を行う場合には、ActiveWorkBookを推奨します。

その理由は、処理を行う対象のExcelブックと、マクロが保存されているブックが同じとは限らないためです。

個人用マクロブックを利用している場合などがそうです。

VBAコードを保存しているブックがどれかを知りたい場合のみThisWorkBookを利用し、それ以外は全てActiveWorkBookを利用すると覚えておいても支障ありません。

使用例

VBAコードが書いてあるブック名が先に表示され、次に現在表示されているブック名が表示されます。

関連記事

サブコンテンツ

このページの先頭へ