Delphi Programming / Object Pascal
[掲載 2009年05月24日] [更新 2020年10月19日] エクセル操作フォームEx |
エクセル操作フォームEx
プロパティ |
動作確認等 |
- |
凡例 |
■ published
□ public
▲ ReadOnly |
以下のプロパティがあります.
全てのプロパティ,メソッド類には,xlf というプリフィックスが付いています.
シートとセルをアクティブにしても,フォーカスは移動(キー入力が可能な状態に)しません.フォーカスを移動するには,マウスでクリックするか,xlfSetFocusExcel メソッドを実行します. |
▲ xlfExcelApp |
- |
TExcelApplication オブジェクト |
▲ xlfExcelBook |
- |
TExcelWorkBook オブジェクト |
▲ xlfExcelSheet |
- |
TExcelWorkSheet オブジェクト |
□ xlfExcelVersion |
String |
エクセルのバージョン文字列 |
□ xlfExcelVersionNo |
Integer |
エクセルのバージョンの整数値 |
□ xlfActiveSheetName |
String |
アクティブなシート名の設定と取得
ブック表示前に設定しておくと,表示後にこのシートを表示する |
□ xlfActiveCell |
String |
アクティブなセルの設定と取得
ブック表示前に設定しておくと,表示後にこのセルが選択状態となる
A1 形式の文字列で指定する |
□ xlfBookFullPath |
String |
ブックのフルパス名
フォーム表示前に設定しておくと,このブックを表示する |
□ xlfScrollArea |
String |
スクロール範囲の設定と取得
ブック表示前の設定も有効
設定値は全シートに対して有効となる
解除するには空文字を指定する |
□ xlfBookSaved |
Boolean |
保存の状態の設定と取得
True にすると強制的にブック変更なしとなる |
□ xlfCellValue[A1] |
OleVariant |
アクティブシートのセル値の設定と取得
引数付きプロパティ
引数 A1 は A1 形式の文字列で指定する
取得に失敗すると Unassigned 値を返す |
□ xlfCellValueOnSheet
[A1, SheetName] |
OleValiant |
指定シートのセル値の設定と取得
引数付きプロパティ
引数 A1 のセルと Sheet のシート名は文字列 |
□ xlfPosValue[ARow, ACol] |
OleVariant |
アクティブシートのセル値の設定と取得
引数付きプロパティ
引数 ARow は行,ACol は列の番号で Integer 型
取得に失敗すると Unassigned 値を返す |
□ xlfPosValueOnSheet
[ARow, ACol, SheetName] |
OleValiant |
指定シートのセル値の設定と取得
引数付きプロパティ
引数 ARow, ACol は行と列番号で Integer 型
Sheet は対象シート名で String 型 |
Cells プロパティを使用して行番号と列番号でセルを指定 |
セル値の設定と取得を,行と列番号 (R1C1 形式) で指定するには,以下のコードでも可能です.エクセル操作フォームEx の内部ではこの処理を実行しています.
Cells.Item の最初の引数が行番号で,2 番目が列番号です.この値が共に 1 の時はシートの左上のセルを意味します.Cells.Item の Item は省略できません. |
procedure TplExcelFormEx2.Button1Click(Sender: TObject);
var
LValue : OleVariant;
begin
//指定セルへ値を設定
xlfExcelSheet.Cells.Item[5, 3].Value := 'Delphi';
//指定セルの値を取得
LValue := xlfExcelSheet.Cells.Item[5,3].Value;
ShowMessage(LValue);
end;
例えば,セル B2 から行方向 (下の行の方) のセルに値を代入したい場合には,エクセル操作フォームEx で実装しているメソッド xlfToR1C1 を使用して,以下のようなコードを使用することもできます. |
procedure TplExcelFormEx2.Button14Click(Sender: TObject);
var
LPos : TPoint;
i : Integer;
begin
LPos := xlfToR1C1('B2');
for i := LPos.Y to 50 do begin
xlfPosValue[i, 2] := i;
end;
end;
以下の設定と取得用のプロパティです.ブック表示前に設定しておくと,xlfActiveSheetNameプロパティで選択シートを変更しても適用されます.
元のエクセルとブックの表示状態は,サイズ,位置とともに,ここで設定した内容に影響しません.これらの設定は,このエクセル操作フォームで表示している時だけ有効です.
ただし,シートの表示切換をシートのタブをクリックして行った場合の結果は保証できません.
エクセルには,シートを追加した時のイベントはありますが,シート削除のイベントはありません.シートを削除すると,そのシートのオブジェクトにアクセスできなくなり,例外が発生します.この例外は捕捉できません.
コードでシートを削除する時は,削除に対する操作に対応できますが,シートのタブのメニューからシートを削除した場合は対応できません.そのため,エクセル操作フォームEx では,エンドユーザによるシートの削除を回避するために,デフォルトではシートのタブを非表示にしています. |
□ xlfDisplayFormulabar |
Boolean |
数式バーの表示.デフォルトは False |
□ xlfDisplayWorkBookTabs |
Boolean |
シートのタブの表示.デフォルトは False |
□ xlfDisplayGridLine |
Boolean |
セルの枠線 (罫線) の表示.デフォルトは False |
□ xlfDisplayHeadings |
Boolean |
行と列の番号の表示.デフォルトは False
エクセルの用語では [見出し行] |
□ xlfDisplayPageBreadks |
Boolean |
ページ区切りの点線表示,デフォルトは True |
[備考]
Excel 2013 には,シート削除時のイベント Beforedelete が追加されています. |
プロパティ xlfScrollArea は,シートのスクロール範囲を制限することができます.エクセルを操作中に,下の方 (行番号の大きい行) を表示しようとすると,スクロールが速くて,目的の行位置で制止することが困難な場合があります.このような場合にスクロール範囲を制限すると便利です.ただし,横方向 (列方向) の制限も同時に指定する必要があります.また,xlfScrollArea で指定した範囲外のセルには移動できなくなります. |
図形やテキストボックスを表すオブジェクトは Shape です.これは Office2000.pas にも定義されていますが,互換性はありません.
Office2000.pas には,エクセルやワードで使用する各種の定数が定義してありますので,これでは不便です.そこで,Txlf2000Shape というオブジェクトを定義しています. |
セルなどのオブジェクトは Range ですが,ワード操作フォームEx の Twdf2000Shape と名前を合わせるために, Txlf2000Range というオブジェクトを定義しています. |
Excel 2007 標準のブック形式と,それまでのエクセルのブックの相互変換機能はありません.
Excel 2007 よりも前のブックは,Excel 2007 がインストールしてある環境では互換モードで開くことになります.互換モードというのは,Excel 2007 以降で,Excel 2007 より前の形式のブックを表示して操作することです.
エクセルの保存ダイアログを使用すると,Excel 2007 のブック形式で保存できます. |
|