AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi will - Excel nicht!!!

Ein Thema von SirRobert · begonnen am 24. Sep 2007 · letzter Beitrag vom 25. Sep 2007
Antwort Antwort
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
muenster

Registriert seit: 9. Apr 2005
Ort: Hamburg
41 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Delphi will - Excel nicht!!!

  Alt 25. Sep 2007, 09:08
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
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Delphi will - Excel nicht!!!

  Alt 25. Sep 2007, 09:29
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz