![]() |
Delphi will - Excel nicht!!!
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:
Wie ich eingangs sagte - mit Office2000 gibt es keine Probleme, aber eben mit Office 2003!
{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 Hat vielleicht jemand eine Idee, wo der Fehler steckt! Ich danke Euch im Voraus!! Schöne Grüße aus Düsseldorf Robert |
Re: Delphi will - Excel nicht!!!
Hi,
damit hast Du kein kleines, sondern ein großes Problem. Die Aufrufparameter hast Du für Office 2000 in Delphi, in Office 2003 sind diese geändert. Meist mehr Parameter oder andere Reihenfolge. Wenn Du kannst, klicke die Aufruffolgen im Macrorecorder von Excel 2003 zusammen und vergleiche den aufgezeichneten Code mit Deinem Delphi Code. Ach so, die Komponenten mit den notwendigen Funktionen ist vermutlich für Office 2000 erzeugt. Bei der Installation wird die gewünschte Version abgefragt. Irgendwo gibt es auch ein Tool um neuere Versionen dieser Komponenten zu erzeugen. Viele Grüße Karsten |
Re: Delphi will - Excel nicht!!!
Ein ähnliches Problem habe ich auch mit Delphi -> Office.
Die Software steuert die Serienbrief-Funktion von MS-Word. Mit Office 2000 klappt es wunderbar. Ein Kunde hat jetzt aber ein Update auf Office 2003 getätigt. Damit klappt es aber nicht mehr. Die Felder für die Adresse und die ganze Steuerung der Serienbriefe will nicht mehr. Als Quick&Dirty Lösung haben wir manuell die Steuerdatei für die Serienbriefe angepasst. Aber eine definitive Lösung ist das nicht, weil die Steuerdatei eigentlich bei jedem Durchlauf neu erzeugt wird. Vor allem, wenn man einen Serienbrief anpasst, dann passt alles nicht mehr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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