Windowオブジェクトの取得

Excel でウィンドウを操作するときに使用するのが Window オブジェクトです。ここでは Excel VBA で Window オブジェクトを取得する方法について解説します。

(Last modified: )

ウィンドウとは

まずウィンドウそのものを確認しておきます。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オブジェクトを取得しウィンドウのタイトルを取得します。

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

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

-- --

Excel VBA で Window オブジェクトを取得する方法について解説しました。

Windowオブジェクトの取得

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。