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 |
右側に配置するフッタの設定 |
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
ページ設定ダイアログ |
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;
|