Witam,

Mój program pobiera dane z pliku Excela i wczytuje je do DBGrida.


ExcelApplication1:=TExcelApplication.Create(Application);
ExcelApplication1.Workbooks.Open(nazwa_pliku,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

//tu jest pętla wczytująca dane - mało istotna

ExcelApplication1.ActiveWorkbook.Close(xldonotsavechanges,nazwa_pliku,0,0);

Tak więc po odczytaniu danych z Excela plik zostaje zamknięty. Podczas zamykania programu nie ma żadnego problemu.

Problem pojawia się w następującej sytuacji

  1. Uruchamiam Excela
  2. Otwieram zapisany wcześniej Plik1.xls i dokonuję w nim jakiejś zmiany. Zmian tych na razie nie zapisuję !!!
  3. Odpalam program w Delphi i wczytuję dane z pliku Excela o nazwie Plik2.xls
  4. Kiedy zamykam program w Delphi Excel "wisi" cały czas i czeka z okienkiem, czy zapisać zmiany w Plik1.xls
  5. Program w Delphi się zawiesza

Jak "zwolnić" Excela z poziomu mojego program.
próbowałem:

 
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.Destroy;

i niestety nic nie pomaga. Dziwi mnie trochę, że podczas zamykania program chce zamknąć także Excela pomimo tego, że Plik2.xls uruchomiony z poziomu programu już został zamknięty - "wisi" natomiast Plik1.xls otwarty bezpośrednio z poziomu Excela.

Proszę o pomoc.
Pozdrawiam