2023/10/04

Notes - Excel 連携:#21)セルのマージとシートのフォント設定

今回は、準備作業です。

明細行であるプリンタの使用量を出力する前に、帳票のフォーマットなどの準備作業(初期化)を行います。その作業の中で、新しく、セルのマージとシートのフォントの設定についてまとめます。


帳票出力エージェント

今回の帳票出力プログラムもエージェントから起動する前提で記載しています。

今回のテーマの準備作業は、初期化処理として xInit 関数を定義し独立させることとします。引数は、WorkSheet オブジェクトで、そのシートに対して処理を行います。

Sub Initialize
   Dim oXls As Variant
   Dim oSheet As Variant

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

   '帳票の初期化
   Call xInit(oSheet)

   'Excel を UI に表示
   oXls.Visible = True
End Sub


セルのマージ

まずは、帳票のタイトルを表示するエリアを作成します。

タイトルは、帳票の上にセンタリングして表示させます。表の幅分のセルをマージしておくと、文字をセンタリングするだけで、中央に表示できます。また、この先、列幅を変更しても調整は不要となるので、便利ですね。

先にプログラムを記載します。

Sub xInit(voSheet As Variant)
   'セルのマージ
   Dim oRange As Variant
   Set oRange = voSheet.Range("B3:I3")
   oRange.MergeCells = True

End Sub

セルをマージするには、Range オブジェクトの MergeCells プロパティを True に設定します。この設定だけで、Range オブジェクトが指し示す範囲のセルがマージされます。

Range.MergeCells プロパティ (Excel)

上記のコードでは、セル B3 から I3 までの範囲をマージしています。


ついでに、出力日時を表示する2行目もマージします。こちらは、右寄せとなるのでタイトル列ほどの必然性はありませんが、列幅を意識しなくてよくなるという利点があるので同様の対応をします。

先ほどのプログラムでは、Range オブジェクトを変数に代入していましたが、次のように省略して記述することも可能です。

   oSheet.Range("B3:I3").MergeCells = True
   oSheet.Range("B2:I2").MergeCells = True


全体のフォントの設定

次にフォントを設定します。帳票出力をどのクライアントで実行しても同様の結果になるよう、シート全体のフォントを固定します。

   oSheet.Cells.Font.Name = "メイリオ"
   oSheet.Cells.Font.Size = 12

この設定のポイントは Cells プロパティの使い方です。通常の利用では引数に行と列の番号を数値で明示的に指定します。これらの引数を省略した場合、シート全体のセルを表す Range オブジェクトを返す仕様となっています。これ利用してフォントをすべてのセルに一括設定しています。


その他の準備作業

ここから先は、この『Excel - Notes 連携』シリーズ開始当初に紹介した機能を使用して作成します。詳しくは、第 3 回 ~ 第 5 回を参照ください。


ヘッダタイトルの設定

帳票に表示する表のヘッダ部分の文字列をセットします。Cells プロパティを使用すると、連続したアクセスをするコードの見通しが良くなりますね。

   oSheet.Cells(5, 2).Value = "デバイス名"
   oSheet.Cells(5, 3).Value = "白黒"
   ・・・
   oSheet.Cells(5, 8).Value = "金額"
   oSheet.Cells(5, 9).Value = "合計"


サンプルコード

ここまでの対応でエージェントを実行すると次のようになります。たいして面白くありませんが、セルがマージされ、フォントが設定されています。

最後に、ここまでの初期関数 xInit の全体を掲載します。

Sub xInit(voSheet As Variant)
   'セルのマージ
   voSheet.Range("B3:I3").MergeCells = True
   voSheet.Range("B2:I2").MergeCells = True

   '全体のフォントの設定
   voSheet.Cells.Font.Name = "メイリオ"
   voSheet.Cells.Font.Size = 12

   'ヘッダタイトルの設定
   voSheet.Cells(5, 2).Value = "デバイス名"
   voSheet.Cells(5, 3).Value = "白黒"
   voSheet.Cells(5, 4).Value = "単価"
   voSheet.Cells(5, 5).Value = "金額"
   voSheet.Cells(5, 6).Value = "カラー"
   voSheet.Cells(5, 7).Value = "単価"
   voSheet.Cells(5, 8).Value = "金額"
   voSheet.Cells(5, 9).Value = "合計"
End Sub


前回 Notes - Excel 連携 次回

0 件のコメント:

コメントを投稿