Window.Activateメソッド
ウィンドウをアクティブにしたい場合はWindowオブジェクトのActivateメソッドを利用します。
この「ウィンドウ」ですが、Excelのバージョンによって考え方が異なります。
Excel2010まではマルチドキュメントインターフェース(MDI)のため、Excel自体のウィンドウであるアプリケーションウィンドウと、アプリケーションウィンドウ内に表示する複数のブックウィンドウがあります。
Excel2013からはシングルドキュメントインターフェース(SDI)のため、Excelブックを1つ開くとExcelアプリケーションが1つ起動し、アプリケーションウィンドウに表示されます。
そのため、ActivateメソッドはExcelのバージョンがExcel2010まではブックウィンドウが対象となり、Excel2013からはアプリケーションウィンドウが対象になります。
Activateメソッドの対象
Excelバージョン | 対象ウィンドウ |
Excel2010まで | ブックウィンドウ |
Excel2013から | アプリケーションウィンドウ |
構文
Windowオブジェクト.Activate
Windows(“ウィンドウ名”).Activate
親オブジェクトとしてWindowオブジェクトを指定します。
Windowsプロパティの引数に参照したいウィンドウ名を指定することでもWindowオブジェクトとして扱うことができます。
ウィンドウ名はExcelタイトルバーに表示されているブックのファイル名になります。
指定したウィンドウをアクティブにする
アクティブにしたいウィンドウは事前に対象のブックが開いていることが前提になります。
開いていないブックのウィンドウをアクティブにしようとしても「実行時エラー ‘9’: インデックスが有効範囲にありません。」のエラーになります。
以下のサンプルは事前にWindowオブジェクトを取得しておき、Activateメソッドを利用する方法と、Windowsプロパティにウィンドウ名を渡したものをWindowオブジェクトとして扱い、Activateメソッドを利用する方法です。
一般的には後者の方を紹介されることが多いと思いますが、どちらを使っても構いません。
事前にWindowオブジェクトを取得しておく方法
1 2 3 4 5 6 7 8 |
Sub WindowActivateTest1() Dim w As Window '// Windowオブジェクトを取得 Set w = Windows("Book1.xlsx") w.Activate End Sub |
Windowsプロパティを使う方法
1 2 3 |
Sub WindowActivateTest2() Windows("Book1.xlsx").Activate End Sub |