Hallo zusammen,
wir haben hier im Kundenprojekt (Steuerung Excel über
OLE) seit neustem ein sehr Merkwürdiges verhalten, dass das Excel-Objekt nach dem Schließen im Speicher bleibt (weiterhin im Taskmanager sichtbar). Und das mit Source, der seit 2 Jahren unverändert eingesetzt wird und immer funktioniert hat.
Wie gehabt wird das Excel-Objekt erzeugt mit
Delphi-Quellcode:
excel:=CreateOLEObject('Excel.Application');
excel.Visible:=false;
excel.DisplayAlerts:=false;
excel.Workbooks.Open(ExtractFilePath(ParamStr(0))+'xxx.xls');
excel.Workbooks[1].Worksheets[1].Select;
und wird nach dem Abarbeiten und Speichern mit folgenden Anweisungen geschlossen:
Delphi-Quellcode:
excel.quit;
excel := unassigned;
freeandnil(excel);
Wie gesagt, dieser Source hat seit 2 Jahren problemlos funktioniert, unter Excel 2003 wie auch 2007.
Seit Anfang dieser Woche läuft dies nun unter Excel-2007 nicht mehr, das Excel-Objekt bleibt im Speicher. Sowohl auf unseren eigenen Systemen wie auch auf Kundenseite, wo teilweise deutlich ältere und bis dahin problemlos laufende Versionen eingesetzt wurden. Die Beenden-Anweisungen werden korekt ausgeführt, es tritt auch keine
Exception oder sonstige Warnung auf, aber es wird eben nicht mehr freigegeben.
Unter Excel-2003 läuft der gleiche Source wie gehabt problemlos.
Kann dies evtl. mit dem Microsoft Patch-Day letzt Woche zusammenhängen, dort gab es auch eine Reihe von Updates für Office-2007 und hat noch jemand anderes hier die geschilederten Probleme mit Excel-2007? Oder ist im Source oben an sich ein Denkfehler und gibt es eine andere Lösung die besser für Excel-2007 geeignet ist?
Danke und schöne Grüße