Windowオブジェクトの取得

広告

まずウィンドウそのものを確認しておきます。Excel上で複数のブックを開いた状態で、「ウィンドウ」メニューの「整列」をクリックして下さい。

Windowオブジェクトの取得

すると次のように「ウィンドウの整列」というウィンドウが表示されます。

Windowオブジェクトの取得

「重ねて表示」を選択してから「OK」ボタンをクリックして下さい。

Windowオブジェクトの取得

このようにExcel自体のウィンドウの中に、1つ1つのブックはそれぞれ別のウィンドウの中に存在しています。

Windowオブジェクトの取得

開いている全てのウィンドウはWindowsコレクションに含まれています。1つ1つのウィンドウを表すWindowオブジェクトはApplicationオブジェクトの「Windows」プロパティで取得します。

Dim window1 As Window

Set window1 = Application.Windows(インデックス番号)

Applicationオブジェクトを省略した場合にも、デフォルトの値としてApplicationオブジェクトが設定されているので記述してもしなくても構いません。

取得したいウィンドウを指定するにはインデックス番号で指定するかウィンドウ名で指定します。注意する点としてインデックス番号はアクティブなウィンドウが常に「1」になるためインデックス番号は常に変化します。その為、ウィンドウ名で指定したほうがいいでしょう。

ウィンドウ名とはウィンドウのタイトルの部分に表示されている文字列です。(下記の赤丸の部分です)。

Windowオブジェクトの取得

通常ウィンドウ名にはブック名が表示されていますが、ブック名とは別に設定することもできます。ウィンドウ名を使う場合には次のようになります。

Dim window1 As Window

Set window1 = Application.Windows("VBAsample.xls")

サンプルプログラム

では簡単なサンプルで試してみましょう。3つのブックを開いておきます。

Windowオブジェクトの取得

この中から「2005年成績.xls」というウィンドウ名を持つWindowオブジェクトを取得しウィンドウのタイトルを取得します。

testwindow1.bas

Sub テスト()
    
    Dim window1 As Window
    
    Set window1 = Application.Windows("2005年成績.xls")
    MsgBox window1.Caption
    
End Sub

上記マクロを実行すると次のようになります。

Windowオブジェクトの取得

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )