Windowsプロパティ
VBAではウィンドウをWindowオブジェクトとして扱います。
WindowオブジェクトはWindowsプロパティに引数indexとして参照したいウィンドウ名もしくはウィンドウのインデックス番号を渡すことで取得できます。
Windowオブジェクトを使うと、ウィンドウの整列やコピーや分割などの各種ウィンドウの操作を行うことが出来ます。
構文
Application.Windows(index) As Window
Workbook.Windows(index) As Window
Application.Windows As Windows
Workbook.Windows As Windows
親オブジェクト | Windowsプロパティの親オブジェクトとしてApplicationオブジェクトまたはWorkbookオブジェクトを指定します。
Applicationオブジェクトを指定した場合はExcelのバージョンが2010までは開いているブックウィンドウが対象となり、2013からはExcel自体のウィンドウが対象になります。 Workbookオブジェクトを指定した場合はブック内で開いているウィンドウやウィンドウのコピーが対象になります。 親オブジェクトの省略時はApplicationオブジェクトとして動作します。 Workbookオブジェクトは省略できません。 |
index (省略可) |
参照したいウィンドウ名またはインデックス番号を指定します。
ウィンドウ名はタイトルバーに表示されている文字列を指します。 インデックス番号の最小値は1で、アクティブウィンドウが1になります。 indexが不正の場合はエラーになります。 indexを省略した場合は親オブジェクト内で開いている全てのウィンドウであるWindowsオブジェクトを参照します。 |
戻り値 | indexを指定した場合は対象のWindowオブジェクトが返されます。
indexを指定しなかった場合は対象のWindowsオブジェクトが返されます。 |
ウィンドウ名を指定する場合の注意
ウィンドウ名はExcelの設定ではなくWindowsOSのフォルダーオプションの表示設定で、「登録されている拡張子は表示しない」にチェックが付いているかどうかで表示内容が変わります。
拡張子が表示されている場合
「登録されている拡張子は表示しない」にチェックが付いていない場合はウィンドウのタイトルバーにも拡張子が表示されます。
その場合は、
1 |
Windows("Book1.xlsx") |
のように拡張子も含めて指定する必要があります。拡張子が含まれていない場合はエラーになります。
拡張子が表示されていない場合
逆に、「登録されている拡張子は表示しない」にチェックが付いている場合は、ウィンドウのタイトルバーには拡張子は表示されません。
その場合は、
1 |
Windows("Book1") |
のように拡張子を含めずに指定してもいいですし、
1 |
Windows("Book1.xlsx") |
のように拡張子を含めても構いません。
未保存のブックを参照する場合は、拡張子が決定していないため、拡張子を含まずにウィンドウ名を指定します。
サンプルコード
以下のコードは指定したウィンドウの幅と高さを出力するサンプルです。
変数wはWindowオブジェクト変数で、Windowsプロパティの戻り値を設定します。
1 2 3 4 5 6 7 8 9 10 |
Sub WindowTest() Dim w As Window Set w = Application.Windows(1) Set w = ActiveWorkbook.Windows(1) Set w = Windows("Book1.xlsx") Debug.Print w.Width '// ウィンドウ幅 Debug.Print w.Height '// ウィンドウ高さ End Sub |