Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Excel Automation - Zelle einfärben (mal wieder, diesmal aber in Schleife) (https://www.delphipraxis.net/170142-excel-automation-zelle-einfaerben-mal-wieder-diesmal-aber-schleife.html)

mrdata 3. Sep 2012 06:38

Excel Automation - Zelle einfärben (mal wieder, diesmal aber in Schleife)
 
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

mrdata 3. Sep 2012 08:56

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

Da ein Programmierer immer erst zum Schluß an sich zweifeln sollte :-D, habe ich das Ganze jetzt noch
einmal mit Delphi 2009 probiert. Hier klappt es auch in der Schleife :(


Viele Grüße
Dirk

Jumpy 3. Sep 2012 09:57

AW: Excel Automation - Zelle einfärben (mal wieder, diesmal aber in Schleife)
 
Ist jetzt bestimmt nur in deinem Beispiel so, aber falls die zu färbende Region immer zusammenhängend sein sollte kannst du das auch in einem einzigen Befehl einfärben ala:

ExcelWorksheet1.Range['B11','B13'].Interior.ColorIndex := 3;

mrdata 3. Sep 2012 11:45

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

danke für die Info. Die Zellen hängen jetzt nur in meinem Test zufälligerweise zusammen.

Ich habe inzwischen ein Delphi Update gestartet auf Delphi XE2 Update 4.

JETZT FUNKTIONIERTS :oops::oops::oops::oops:

Sorry, für's "zumüllen".

Aber vielleicht stolpert ja noch einmal jemand darüber...

Viele Grüße
Dirk


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz