2023/04/16

Notes - Excel 連携:#7)ウィンドウ枠の固定

CSV ファイルのようにノーツ文書を Excel シートに一覧出力する場合、1行目は項目名を出力し、ヘッダ行のようにすることがあります。このようなシートでは、ヘッダ行はスクロールを固定して常時表示されると使い勝手が良いですよね。

ということで今回は、Excel の『ウィンドウ枠の固定』を LotusScript から設定する方法です。

以下の例は、ワークシートの1行目を固定するプログラムです。赤字の部分が枠を固定している箇所です。

Sub Initialize
   Dim oXls As Variant
  
   Set oXls = CreateObject("Excel.Application")
   Call oXls.Workbooks.Add
  
   oXls.ActiveWindow.SplitRow = 1
   oXls.ActiveWindow.FreezePanes = True

  
   oXls.Visible = True
End Sub

Application オブジェクトの ActiveWindow プロパティが新登場です。

Application.ActiveWindow プロパティ (Excel)

このプロパティは、『作業中の Excel ウィンドウ (上のウィンドウ) を表す Window オブジェクトを返します。 』だそうです。今回で言うと、直前で Add した Excel のワークブックということですね。そして、”作業中の Excel ウィンドウ”ということなので、Active というプロパティ名なのでしょう。

このプロパティの型は、Window オブジェクトです。

Window オブジェクト (Excel)

Microsoft Learn の記述読んでも、いまいちよくわかりませんが、ActiveSheet や ActiveCell プロパティのように今使っているオブジェクト(LotusScript 的に言うと”Current”?)があり、ウィンドウサイズを表す Height や Width プロパティがあることから、UI にまつわるオブジェクトだと判断できます。

この Window オブジェクトに『ウィンドウ枠の固定』するためのプロパティがあります。

SplitRow プロパティは固定する行番号で、その固定を有効にするのが FreezePanes プロパティです。

また、シートによっては行と列を固定した場合もあるかと思います。このようなときは、SplitColumn プロパティを使用します。

例えば、以下のサンプルでは、1行目と1列目のスクロールが固定されます。

oXls.ActiveWindow.SplitRow = 1
oXls.ActiveWindow.SplitColumn = 1
oXls.ActiveWindow.FreezePanes = True
前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿