Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月24日] [更新 2013年12月14日] エクセル操作フォームEx
エクセル操作フォームEx   参考コード類
ヘッダとフッタ部の操作
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010







ヘッダとフッタ部の設定


エクセルのヘッダとフッタの設定は,シートの PageSetup オブジェクトの各プロパティを文字列で設定します.以下のような種類があります.


LeftHeader 左側に配置するヘッダの設定
CenterHeader 中央に配置するヘッダの設定
RightHeader 右側に配置するヘッダの設定
LeftFooter 左側に配置するフッタの設定
CenterFooter 中央に配置するフッタの設定
RightFooter 右側に配置するフッタの設定


次のコードは,実際の設定例です.


リスト1
ヘッダとフッタの設定例
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
  DateStr : String;
  TimeStr : String;
begin
  //現在の日付と時刻をヘッダ部の右側に2行で印刷.文字サイズは8ポイント
  DateStr := '印刷日付 : ' + FormatDateTime('yyyy"年"m"月"d"日"', Date);
  TimeStr := '印刷時刻 : ' + FormatDateTime('h"時"m"分"s"秒"', Time);

  //  sLineBreak(#13#10)だと2行の空白行となってしまうので#13
  xlfExcelSheet.PageSetup.RightHeader := '&08' + DateStr + #13 + TimeStr;

  //ヘッダの中央に'MS P明朝'の20ポイントのサイズでシート名を印刷
  xlfExcelSheet.PageSetup.CenterHeader:='&"MS P明朝"&20&A';

  //フッタの中央にページ番号と総ページ数を印刷
  xlfExcelSheet.PageSetup.CenterFooter := '&P/&N';

  //ついでにページの余白も設定してみる
  //単位はポイント数なののでセンチメートルから換算
  xlfExcelSheet.PageSetup.LeftMargin   := xlfExcelApp.CentimetersToPoints(3.5, 0);
  xlfExcelSheet.PageSetup.TopMargin    := xlfExcelApp.CentimetersToPoints(3.5, 0);
  xlfExcelSheet.PageSetup.RightMargin  := xlfExcelApp.CentimetersToPoints(3.5, 0);
  xlfExcelSheet.PageSetup.BottomMargin := xlfExcelApp.CentimetersToPoints(3.5, 0);
end;




ヘッダとフッタに指定できる書式コード


下表は,ヘッダとフッタの設定で使用可能な書式の一部です.詳細は Excel VBA のヘルプ等で確認してください.


表1
Excel 2010 VBA のヘルプからの抜粋
記号 意味
&E 二重下線付き文字列
&X 上付き文字
&Y 下付き文字
&B 太字
&I 斜体文字列
&U 下線付き文字列
&D 現在の日付
&T 現在の時刻
&F ファイルの名前
&A シート見出し名
&P ページ番号
&N 総ページ数
&P+ <数値> ページ番号に 指定した <数値> を加えた値
&P- <数値> ページ番号から指定した <数値> を引いた値
&"<フォント名>" 文字のフォント.フォント名は,半角の二重引用符 (") で囲む
&nn フォント サイズ.nn はポイント数を表す 2 桁の数値




ヘッダとフッタ部の表示 - Excel 2007 以降


Excel 2007 以降では,ページレイアウトという,印刷プレビューのような表示形式があります.この表示形式にするとヘッダ部とフッタ部が表示されます.
下図では,上のコードで設定した,ページ番号や日付等が表示されています.


図1
ページレイアウト表示

リスト2
ページレイアウト表示にしてヘッダ部とフッタ部の設定を確認
//=============================================================================
//  ページレイアウト表示
//  Excel 2007以上のみ
//=============================================================================
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
const
  xlPageLayoutView = 3;
var
  pIndex : OleVariant;
  AItem  : OleVariant;
begin
  if xlfExcelVersionNo >= 12 then begin
    xlfExcelApp.ActiveWindow.View := xlPageLayoutView;
    xlfSetFocusExcel;
  end;
end;

//=============================================================================
//  通常の表示形式に戻す
//=============================================================================
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
begin
  xlfExcelApp.ActiveWindow.View := xlNormalView;
end;




ページ設定ダイアログを表示して設定を確認


ヘッダ部あるいはフッタ部をダイアログで設定する場合は,ページ設定ダイアログを表示します.
次のサンプルは,Dialog オブジェクトの Show メソッドで,このページ設定ダイアログを表示しますが,上のサンプルと同じく,余白の設定もしてみました.
このサンプルのように,Show メソッドの引数で,初期値を設定できますが,ダイアログの Show メソッドの引数の説明は,VBA のヘルプにも,MSDN オンラインにもありません.PageSetup オブジェクトの各プロパティで設定しておく方が確実です.


図2
ページ設定ダイアログ

リスト3
ページ設定ダイアログを表示する
procedure TplExcelFormEx1.Button5Click(Sender: TObject);
var
  pIndex     : OleVariant;
  AItem      : OleVariant;
  LeftMargin : OleVariant;
  TopMargin  : OleVariant;
begin
  pIndex := xlDialogPageSetup;
  try
    AItem := xlfExcelApp.Dialogs.Item[pIndex];
    LeftMargin := 35 / 25.4;
    TopMargin  := 50 / 25.4;
    AItem.Show(Arg3 := LeftMargin, Arg5 := TopMargin);
  except
    raise;
  end;
  xlfSetFocusExcel;
end;