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 のブック形式で保存できます。 |
|