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 件のコメント:
コメントを投稿