■ ブック、ウィンドウの操作をマスターしよう!2
前回に引き続き、Winodwオブジェクトの操作に関する解説を行います。開かれているウィンドウに対して操作を行うには、Windowオブジェクトを利用します。この場合、1つのブックで複数のウィンドウを開き、操作することもできます。
ウィンドウを操作する
■ウィンドウのコピーを開く
ウィンドウのコピーを開くにはNewWindowメソッドを使用します。[ウィンドウ]メニューの[新しいウィンドウを開く]と同じ処理を行うことができます。
[書式]
オブジェクト.NewWindow
オブジェクトには、WindowオブジェクトまたはWorkbookオブジェクトを指定します。開かれていないWindowオブジェクトまたはWorkbookオブジェクトを指定するとエラーが発生するので注意してください。
(例)
Windows("Book1.xls").NewWindow
この例では、「Book1.xls」ウィンドウのコピーを、新しいウィンドウで開きます。 |
※ ウィンドウのコピーを開くことで、元のウィンドウと並べて表示し、同じブック内の「Sheet1」シートと「Sheet2」シートを、同時に表示して比較したりすることができます。
■ウィンドウを整列する
ウィンドウを整列させるには、Windows.Arrangeメソッドを使用します。[ウィンドウ]メニューの[整列]と同じ処理を行うことができます。
[書式]
Windows.Arrange スタイル, アクティブ, 横同期, 縦同期
スタイルには、整列方法をXlArrangeStyleクラスの定数で指定します。定数の一覧は次の通りです。
定数 |
内容 |
xlArrangeStyleTiled (既定値) |
並べて表示される |
xlArrangeStyleCascade |
重ねて表示される |
xlArrangeStyleHorizontal |
上下に並べて表示される |
xlArrangeStyleVertical |
左右に並べて表示される |
アクティブには、TrueまたはFalseを指定します。Trueを指定するとアクティブウィンドウのみを、Falseを指定するとすべてのウィンドウを整列します。省略するとFalseが適用されます。
横同期には、TrueまたはFalseを指定します。Trueを指定すると横方向のスクロールを同期させます。この場合、引数アクティブにTrueが指定されている必要があります。省略するとFalseが適用されます。
縦同期には、TrueまたはFalseを指定します。Trueを指定すると縦方向のスクロールを同期させます。この場合、引数アクティブにTrueが指定されている必要があります。省略するとFalseが適用されます。
※ 最小化しているウィンドウは整列の対象外になります。
(例)
Windows.Arrange xlArrangeStyleCascade
この例では、現在開いている複数のウィンドウを重ねて表示させます。 |
(例)
Sub Test()
ActiveWindow.NewWindow
Windows.Arrange xlArrangeStyleVertical, True, , True
End Sub
この例では、アクティブなウィンドウのコピーを開いたあと、左右に整列させ、縦方向にスクロールを同期させます。 |
■ウィンドウを最大化/最小化表示する
ウィンドウを最大化/最小化表示させるには、WindowStateプロパティを使用します。
[書式]
オブジェクト.WindowState
オブジェクト.WindowState = 設定値
オブジェクトには、WindowオブジェクトまたはApplicationオブジェクトを指定します。Windowオブジェクトを指定した場合はウィンドウの状態を、Applicationオブジェクトを指定した場合はExcelウィンドウの状態を、取得/設定します。
設定値には、XlWindowState クラスの定数で指定します。定数の一覧は次の通りです。
定数 |
内容 |
xlMaximized |
最大化表示 |
xlNormal |
通常表示 |
xlMinimized |
最小化表示 |
(例)
Sub Test()
ActiveWindow.WindowState = xlNormal
Application.WindowState = xlMaximized
End Sub
この例では、アクティブウィンドウを通常表示にしたあと、Excelウィンドウを最大化表示にします。 |
■ウィンドウのサイズを取得・設定する
ウィンドウの幅を取得・設定するにはWidthプロパティを、高さを取得・設定するにはHeightプロパティを使用します。
[書式]
オブジェクト.Width
オブジェクト.Width = 設定値
オブジェクト.Height
オブジェクト.Height = 設定値
オブジェクトには、WindowオブジェクトまたはApplicationオブジェクトを指定します。Windowオブジェクトを指定した場合はウィンドウの幅/高さを、Applicationオブジェクトを指定した場合はExcelウィンドウの幅/高さを、それぞれポイント単位で取得/設定します。
設定値には、ウィンドウの幅/高さに設定したい数値をポイント単位で指定します。
※ Widthプロパティ、Heightプロパティを使用して幅/高さに設定する場合、対象となるウィンドウを通常表示しておく必要があります。
(例)
Sub Test()
With ActiveWindow
.WindowState = xlNormal
.Height = 300
.Width = 300
End With
End Sub
この例では、アクティブウィンドウを通常表示にしたあと、高さと幅をそれぞれ300ポイントに変更します。 |
■ウィンドウの表示位置を取得・設定する
ウィンドウの表示位置を取得・設定するにはTopプロパティとLeftプロパティを使用します。
[書式]
オブジェクト.Top
オブジェクト.Top = 設定値
オブジェクト.Left
オブジェクト.Left = 設定値
オブジェクトには、Windowオブジェクトを指定します。
設定値には、ウィンドウの表示位置に設定したい数値をポイント単位で指定します。Topプロパティはウィンドウ領域の上端からウィンドウまでの距離を、Leftプロパティはウィンドウ領域の左端からウィンドウまでの距離を、それぞれ取得/設定します。
※ Topプロパティ、Leftプロパティを使用して幅/高さに設定する場合、対象となるウィンドウを通常表示しておく必要があります。
(例)
Sub Test()
With ActiveWindow
.WindowState = xlNormal
.Top = 100
.Left = 100
End With
End Sub
この例では、アクティブウィンドウを通常表示にしたあと、表示位置を上端・左端からそれぞれ100ポイントに変更します。 |
※ さらに詳細なウィンドウ座標の取得・設定に関しては「スクリーン座標を取得しよう!」の解説を参照してください。
■ウィンドウのサイズを変更不可にする
ウィンドウのサイズを変更できないようにするには、EnableResizeプロパティを使用します。
[書式]
オブジェクト.EnableResize
オブジェクト.EnableResize = 設定値
オブジェクトには、Windowオブジェクトを指定します。
設定値には、TrueまたはFalseを指定します。Trueを指定するとウィンドウのサイズが変更可能に、Falseを指定すると変更不可に設定されます。省略するとTrueが適用されます。
※ EnableResizeプロパティを使用する場合、対象となるウィンドウを通常表示しておく必要があります。
(例)
Sub Test()
ActiveWindow.EnableResize = Not ActiveWindow.EnableResize
End Sub
この例では、コードを実行するたびに、アクティブウィンドウのサイズ変更の可/不可が切り替わります。 |
■ウィンドウの最大サイズを取得する
ウィンドウ領域で横方向に使用可能な領域のサイズを取得するにはApplication.UsableWidthプロパティを、縦方向に使用可能な領域のサイズを取得するにはApplication.UsableHeightプロパティを使用します。
[書式]
Application.UsableWidth
Application.UsableHeight
※ このプロパティは値の取得のみ可能で、設定をすることはできません。
(例)
Sub Test()
With ActiveWindow
.WindowState = xlNormal
.Top = 0
.Left = 0
.Height = Application.UsableHeight
.Width = Application.UsableWidth
End With
End Sub
この例では、アクティブウィンドウを通常表示にしたあと、ウィンドウの位置を左上端に移動し、幅と高さをウィンドウ領域いっぱいに変更します。最大表示との違いは、あくまでウィンドウが通常表示の状態でウィンドウサイズを最大にしている部分です。 |
■ウィンドウの上端と左端を設定する
ウィンドウの上端の行を設定するにはScrollRowプロパティを、左端の列を設定するにはScrollColumnプロパティを使用します。
[書式]
オブジェクト.ScrollRow
オブジェクト.ScrollRow = 設定値
オブジェクト.ScrollColumn
オブジェクト.ScrollColumn = 設定値
オブジェクトには、Windowオブジェクトを指定します。
設定値には、上端/左端に設定する行/列の番号を数値で指定します。
(例)
Sub Test()
With ActiveWindow
.ScrollColumn = 5
.ScrollRow = 10
End With
End Sub
この例では、アクティブウィンドウの左上端のセルを、「E10」セルに変更します。 |
■ウィンドウの表示倍率を変更する
ウィンドウの表示倍率を変更するには、Zoomプロパティを使用します。
[書式]
オブジェクト.Zoom
オブジェクト.Zoom = 設定値
オブジェクトには、Windowオブジェクトを指定します。
設定値には、表示倍率をパーセントを表す数値で設定します。またTrueを指定すると現在の選択範囲に適した表示倍率に、Falseを指定すると100パーセントの表示倍率に、それぞれ自動的に設定されます。
※ 表示サイズが変更されるのはアクティブシートのみです。
(例)
ActiveWindow.Zoom = 200
この例では、アクティブウィンドウの表示倍率を「200%」に変更します。 |
以上、Excel上で、ブック、ウィンドウを操作する方法について解説しました。Excel上で複数のブックを開いて操作を行う場合、これらのテクニックが必須になります。また、機能に応じてマクロブックを分けることで、さらに保守のしやすい、システムを設計することが可能です。
※ 他のブックのマクロを呼び出すには、「スコープ(適用範囲)を意識したプログラミング」の解説を参照してください。
ぜひ、今回のテクニックをあなたのシステム開発に応用してください。
|