2011-03-14 295 views
3

Delphi7プログラムでExcelから行を削除したいと思います。
これは、例外がスローされます。DelphiプログラムからExcelの行を削除

Excel := CreateOleObject('Excel.Application'); 
... 
Excel.ActiveWorkBook.Rows(row).Delete; 

は私が間違って何をしているのですか?私にとって

+3

例外は何ですか? – shahkalpesh

答えて

2

Rowsは、Worksheetのプロパティです。これはうまくいくはずです:

Excel.ActiveWorkBook.ActiveSheet.Rows[row].Delete; 

"Excel Object Model Reference"を参照してください。

+0

それは動作します。 Excel.ActiveSheetは簡単になりますか? –

+0

@David - はい! :) –

+0

+1私はあなたとは違って、エラーの原因を少なくとも説明しました。私はちょうど早期拘束のために直進した私は遅い綴りが嫌い。 –

2

次作品:ずっと楽になり、私は事前バインディングを使用してい

var 
    Excel: ExcelApplication; 
    Workbook: ExcelWorkbook; 
    Sheet: ExcelWorksheet; 
begin 
    Excel := CoExcelApplication.Create; 
    Workbook := Excel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT); 
    Sheet := Workbook.ActiveSheet as ExcelWorksheet; 
    Sheet.Range['A1','A1'].EntireRow.Delete(EmptyParam); 
end; 

注意。 Excel2000ユニットを含めるだけで、このコードが役に立ちます。

アーリーバインディングを使用すると、実行時エラーを診断するのではなく、コンパイル時にこのようなエラーを検出できます。

あなたはSertac状態として、その後、遅延バインディングを続行したい場合は、この作品:

Excel.ActiveSheet.Rows[1].Delete; 

はしかし最初のブックを作成することを忘れないでください!

+1

ワークブック・ページを作成するだけでなく、ユーザーがワークシートを完全にクローズしている可能性があるため、毎回ActiveSheetがあるかどうかを確認してください。 –

関連する問題