Einzelnen Beitrag anzeigen

mrdata

Registriert seit: 20. Dez 2007
3 Beiträge
 
#1

Excel Automation - Zelle einfärben (mal wieder, diesmal aber in Schleife)

  Alt 3. Sep 2012, 06:38
Hallo liebe Delphi-Gemeinde,

ich stehe gerade vor einem Problem u. vermutlich liegt dieses zwischen meinen Ohren
Ich versuche gerade über den Automation Server Office XP verschiedene Zellen einer Excel
Tabelle ein zu färben. Das funktioniert auch problemlos, solange ich das Einfärben im Code
nacheinander mache. Möchte ich das Ganze jedoch in einer Schleife ausführen, erhalte ich als Fehlermeldung
eine Zugriffsverletzung auf Adresse 00404F26.

Anbei mein Code (Delphi: XE2 Prof.):

var
Zelle: Array[0..2] of String;
I: Integer;

//
// Excel Application starten und Exceldokument oeffnen
//

ExcelApplication1.Connect;
ExcelApplication1.Visible[GetUserDefaultLCID] := FALSE;
ExcelApplication1.UserControl := FALSE;
ExcelApplication1.Workbooks.Open('C:\Test.xls', False, False,
EmptyParam, '', False, False, EmptyParam, EmptyParam, false, false,
EmptyParam, EmptyParam, EmptyParam, false, 0);
// Workbook verbinden
ExcelWorkbook1.ConnectTo(ExcelApplication1.ActiveW orkBook);
// Woorksheet verbinden und aktivieren
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets.It em[1] as _Worksheet);
ExcelWorksheet1.Activate;

//
// Einzufärbende Zellen (als Test)
//

Zelle[0] := 'B11';
Zelle[1] := 'B12';
Zelle[2] := 'B13';

//
// Funktionierender Code
//

I := 0;
ExcelWorksheet1.Range[Zelle[I],Zelle[I]].Interior.ColorIndex := 3;
I := I + 1;
ExcelWorksheet1.Range[Zelle[I],Zelle[I]].Interior.ColorIndex := 3;
I := I + 1;
ExcelWorksheet1.Range[Zelle[I],Zelle[I]].Interior.ColorIndex := 3;

//
// Endlich der Code, der Probleme bereitet
//

for I := 0 to 2 do begin
ExcelWorksheet1.Range[Zelle[I],Zelle[I]].Interior.ColorIndex := 3;
end;

//
// Speichern u. schliesen
//

ExcelWorkbook1.Save;
ExcelWorkbook1.Close;


Ich bin für jede Hilfe oder Anregung dankbar!

Viele Grüße
Dirk
Dirk
  Mit Zitat antworten Zitat