1

Delphi アプリケーションから行を挿入するように Excel を説得しようとしています。

通常、新しいデータをスプレッドシートの末尾に追加するだけですが、このアプリケーションのブリーフには、従うべきテンプレート デザインが厳密に含まれています。

この質問には、GolezTrol が次のコードを提案する回答があります。

ExcelApplication.ActiveSheet.Rows[10].Insert;

また

ExcelApplication.ActiveSheet.ActiveCell.EntireRow.Insert;

Excel2010 を使用して、いずれかのオプションをコンパイルしようとすると、「宣言されていない識別子 'Rows'」または「宣言されていない識別子: ActiveCell」のいずれかが表示されます。

このようにすることを可能にする提案はありますか?

4

1 に答える 1

5

早期バインディングを使用しています。リンクした質問で言及した答えは、遅延バインディング用です。次のようなコードでその答えをテストできます。

var
  Excel: OleVariant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;
  Excel.Workbooks.Add;
  Excel.ActiveSheet.Rows[10].Insert;
  ...


ただし、オブジェクト モデルはアーリー バインディング インターフェイスとは多少異なります。リファレンスはこちらにあります

行を挿入する例は、次のようになります。「ワークブック」が有効なワークブックを参照すると仮定すると、次のように 10 行目に行を挿入できます。

var
  Range: ExcelRange;
begin
  Range := (Workbook.ActiveSheet as _Worksheet).Range['A10', 'A10'].EntireRow;
  Range.Insert(xlShiftDown, Null);
  ..
于 2013-01-28T21:09:35.150 に答える