Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月24日] [更新 2020年10月19日] エクセル操作フォームEx
エクセル操作フォームEx
プロパティ
動作確認等 -





凡例  published
 public
 ReadOnly


全てのプロパティの先頭にxlfが付いています.



プロパティ一般


以下のプロパティがあります.
全てのプロパティ,メソッド類には,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 で指定した範囲外のセルには移動できなくなります.




Txlf2000Shape オブジェクト


図形やテキストボックスを表すオブジェクトは Shape です.これは Office2000.pas にも定義されていますが,互換性はありません.
Office2000.pas には,エクセルやワードで使用する各種の定数が定義してありますので,これでは不便です.そこで,Txlf2000Shape というオブジェクトを定義しています.




Txlf2000Range オブジェクト


セルなどのオブジェクトは Range ですが,ワード操作フォームEx の Twdf2000Shape と名前を合わせるために, Txlf2000Range というオブジェクトを定義しています.




Excel 2007 のブック


Excel 2007 標準のブック形式と,それまでのエクセルのブックの相互変換機能はありません.
Excel 2007 よりも前のブックは,Excel 2007 がインストールしてある環境では互換モードで開くことになります.互換モードというのは,Excel 2007 以降で,Excel 2007 より前の形式のブックを表示して操作することです.
エクセルの保存ダイアログを使用すると,Excel 2007 のブック形式で保存できます.