Einzelnen Beitrag anzeigen

SirRobert

Registriert seit: 24. Aug 2006
Ort: Düsseldorf
18 Beiträge
 
Delphi 6 Enterprise
 
#1

Delphi will - Excel nicht!!!

  Alt 24. Sep 2007, 17:46
Hallo zusammen,


ich habe ein "kleines" Problem...
folgende Situation: ich habe einige Textdateien, die ich zuvor aus Stringlisten gespeichert habe.
Die Dateien werden paarweise aus 2 Stringlisten erstellt: NormalListe, AusnahmeListe.
Nach dem Speichern der Listen, öffne ich zuerst die NormalListe mit Excel, und speichere die Datei
anschließend im mactext-Format (keine Probleme). Nun öffne ich die AusnahmeListe und speichere diese
nach einigen Formatierungen als ganz "normale" xls-Datei ab. Mit Office 2000 funktioniert beides wunderbar,
doch mit der 2003 Version erhalte ich einen Fehler: OLE-Fehler 800A03EC.
Dies scheint ein EXCEL-spezifischer Fehler zu sein – und ich kriege ihn nicht weg!!!
Hier mein Code (verkürzt):

Delphi-Quellcode:
{zuerst werden die txt-Dateien erstelllt}
...
{Verbindung mit Excel herstellen über ConnectXL() }
{wenn erfolgreich: erstelle erst die Datei in mactext-Format}
FileFormat := xlTextMac;
ExcelApp.Workbooks.OpenText(TempFileName1, xlWindows, EmptyParam, xlDelimited,
                            xlDoubleQuote, EmptyParam, true, false, false,
                            false, EmptyParam, EmptyParam, EmptyParam,
                            EmptyParam, EmptyParam, EmptyParam, FLCID);

ExcelSheet.ConnectTo(ExcelApp.Worksheets.Item[1] as _Worksheet);
DeleteFileIfExists(FileNameAccurate);
ExcelSheet.SaveAs(FileNameAccurate, FileFormat);
ExcelApp.Workbooks.Item[1].Saved[FLCID] := true;
ExcelApp.Workbooks.Close(FLCID);
ExcelSheet.Disconnect;

{erstelle nun die normale Excel-Datei}


FileFormat := xlNormal;
ExcelApp.Workbooks.OpenText(TempFileName2, xlWindows, EmptyParam, xlDelimited,
                            xlDoubleQuote, EmptyParam, true, false, false,
                            false, EmptyParam, EmptyParam, EmptyParam,
                           EmptyParam, EmptyParam, EmptyParam, FLCID);

ExcelSheet.ConnectTo(ExcelApp.Worksheets.Item[1] as _Worksheet);
Count := InttoStr(ExceptionList.Count);
with ExcelSheet.Range['A1' , 'B' + Count] do
begin
  Font.Bold := false;
  VerticalAlignment := xlTop;
  HorizontalAlignment := xlLeft;
  WrapText := true;
end;
with ExcelSheet.Range['A1' , 'A' + Count] do
begin
  Font.Size := 8;
  ColumnWidth := 11;
end;
with ExcelSheet.Range['B1' , 'B' + Count] do
begin
  Font.Size := 14;
  ColumnWidth := 72;
end;
with ExcelSheet.PageSetup do
begin
  CenterHeader := '&8&N';
  CenterFooter := '&8Seite &8&P &8von &8&A';
  PrintGridlines := true;
end;

ExcelSheet.SaveAs(FileNameException, FileFormat); //[b]FEHLER: OLE-Fehler 800A03EC[/b]
//ExcelSheet.SaveAs(FileNameException, FileFormat, '', '', EmptyParam, EmptyParam, EmptyParam); // [b]Auch nicht besser![/b]

ExcelApp.Workbooks.Item[1].Saved[FLCID] := true;
ExcelApp.Workbooks.Close(FLCID);
ExcelSheet.Disconnect

{Excel-Verbindung beenden}
...

function ConnectXL() : boolean;
begin
ConnectXL := true;
try
        with ExcelApp do
        begin
                ExcelApp.Visible[FLCID] := false; // FLCID := LOCALE_USER_DEFAULT;
                ExcelApp.UserControl := false;
                ExcelApp.Connect;
        end;
except
        MessageDlg('Verbindung zu Excel konnte nicht hergestellt werden.', mtError, [mbOK], 0);
        ConnectXL := false;
end
Wie ich eingangs sagte - mit Office2000 gibt es keine Probleme, aber eben mit Office 2003!

Hat vielleicht jemand eine Idee, wo der Fehler steckt!

Ich danke Euch im Voraus!!


Schöne Grüße aus Düsseldorf

Robert
  Mit Zitat antworten Zitat