2023/05/14

Notes - Excel 連携:#9)アクティブ ウィンドウってなんだろ?

Notes - Excel 連携:#7 で SplitRow や FreezePanes プロパティを紹介しました。

Microsoft Learn によると、これらプロパティは”アクティブ ウィンドウ”であることが前提となっています。#7 のコードでは、ActiveWindow プロパティから取得した Window オブジェクトなので問題ないといえます。

ただ、少し気になったので、少し実験してみました。以下のように、Excel のワークブックを2つ開き、Window オブジェクトを2つ作成。Window オブジェクトは、ActiveWindow プロパティを使わず、Windows コレクションオブジェクトから取得しています。

Set oXls = CreateObject("Excel.Application")
Call oXls.Workbooks.Add
Call oXls.Workbooks.Add

'Window 1
oXls.Windows(1).SplitRow = 1
oXls.Windows(1).FreezePanes = True

'Window 2
oXls.Windows(2).SplitRow = 2
oXls.Windows(2).FreezePanes = True

oXls.Visible = True

私は、”アクティブ ウィンドウとはフォーカスを持ったウィンドウ”だと思っていました。LotusScript で言うと、NotesUIWorkspace の CurrentDocument のようなイメージと解釈していました。

結果は、どちらの Excel(ワークブック)も正常に『ウィンドウ枠の固定』が設定されていました。うまくいって良かったのですが、私の想定は間違いでした。

そもそも、”oXls.Visible = True” を最後に実行しているので、UI には何も表示されておらず、フォーカスを持っているはずないですしね...

試しにネットで検索してみると、FreezePanes プロパティは、ウィンドウが最小化されている状態ではエラーが出るそうです。この場合は、”アクティブ”ではないということなのでしょうか...? Excel は難しいですね。

今回は結論がない記事で申し訳ないのですが、今日はこの辺で...

前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿