AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TExcelApplication.Free - Wann wird Excel-Prozess beendet?
Thema durchsuchen
Ansicht
Themen-Optionen

TExcelApplication.Free - Wann wird Excel-Prozess beendet?

Ein Thema von tr909 · begonnen am 2. Mär 2009 · letzter Beitrag vom 2. Mär 2009
Antwort Antwort
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#1

TExcelApplication.Free - Wann wird Excel-Prozess beendet?

  Alt 2. Mär 2009, 15:04
Moin. Ich bin vorhin mal über folgendes gestoßen. Ich öffne mit TExcelApplication eine xls-datei und bearbeite sie etwas. Danach speicher ich die Datei unter neuem Namen und geben ich alles wieder frei. Funktioniert so weit auch ganz gut.
Delphi-Quellcode:
ExcelApplication0 := TExcelApplication.Create(NIL);
ExcelWorkbook0 := TExcelWorkbook.Create(NIL);
ExcelWorksheet0 := TExcelWorksheet.Create(NIL);

weitere Code...

ExcelWorksheet0.SaveAs(filename);
ExcelWorksheet0.Disconnect;
ExcelWorksheet0.Free;
ExcelWorkbook0.Close(False);
ExcelWorkbook0.Disconnect;
ExcelWorkbook0.Free;
ExcelApplication0.Quit;
ExcelApplication0.Disconnect;
ExcelApplication0.Free;
Wenn ich nun anschlißen die Datei per ShellExecute öffnen möchte, stürzt Excel ab (wenn man es danach direkt selbst neu starten lässt, öffnet sich die Datei problemlos.
Delphi-Quellcode:
...
ExcelApplication0.Disconnect;
ExcelApplication0.Free;
ShellExecute(Handle,'open',PChar(filename),nil,nil,1)
Hab nun herausgefunden, das der excel-Prozess noch läuft, wenn ich die Datei öffnen möchte, und es deshalb kracht. Habe danach auch schon versucht hinter ExcelApplication0.Free ein Delay zu setzen, aber es hat nichts gebracht.

Wenn ich den o.a. Code jedoch in eine extra Prozedur (hier UpdateExcel) schreibe und diese dann aufrufe, kann ich danach ohne Problem direkt die Datei öffnen, weil der excel-Prozess direkt nach abarbeiten der Prozedur beendet wird.

Delphi-Quellcode:
UpdateExcel (edQuery.text);
ShellExecute(Handle,'open',PChar(filename),nil,nil,1)
Kann mir jemand erklären woran das liegt?

Gruß
tr909
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: TExcelApplication.Free - Wann wird Excel-Prozess beendet

  Alt 2. Mär 2009, 15:13
Hallo,

die gleichen Probleme hatte ich auch.
Deine Lösung werde ich doch gleich mal einbauen ...

Das Problem könnte an den Interfaces liegen,
sie sind solange gültig, wie die Variable gültig (im Sinne des Compilers -> Scope) ist,
also ein Free reicht nicht.


Heiko
Heiko
  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 02:04 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