Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите! плиззз. Execel не закрывается!!!


tga ©   (2002-11-28 06:51:00) 

Проблема такая:
Запускаю Excel (с помощбю стандартных компонент Delphi 5)
Работаю
Отсоединяюсь - Excel остаётся запущеным.

Как мне его закрыть?

вот код:
ExcelPage_Edit.Items.Clear;

try
//Запускаем Excel
Excel := TExcelApplication.Create(Application);
Excel.ConnectKind := ckNewInstance;
Excel.AutoQuit := true;
Excel.connect;

// Открываем файл
Workbook := Excel.Workbooks.Open(self.Price.FullName, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, true, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, false, xlLCID);

// Читаем название всех страниц и пишем
// в итемы для TComboBox (ExcelPage_Edit)
Worksheets := Workbook.Worksheets;
for i:=1 to Worksheets.Count do begin
WorkSheet := (Worksheets.Item[i] as ExcelWorkSheet);
ExcelPage_Edit.Items.Add(WorkSheet.Get_Name);
end;

// Закрываем файл
Workbook.Close(false, EmptyParam, EmptyParam, xlLCID);
Workbook := nil;

// Теперь закрываем Excel

// Excel.FreeNotification(Application);
// Excel.Disconnect;
Excel.Quit;
// Excel.RemoveFreeNotification(Application);

Не работает!!!! - Не закрывается Excel
не Quit, не любой из закоментированных вариантов, не их комбинции....

Объясните в чём тут дело, и как переделать чтоб Excel закрылся.

Заранее благодарен.


kse   (2002-12-09 16:23:00) [1]

Мой ответ немного ( :))) ) запоздал, но тем не менее, мож кто читать будет.
У меня так
ea: TExcelApplication;
eb: TExcelWorkbook;
...
eb.Close;
eb.Disconnect;
ea.Quit;
ea.Disconnect;

Excel закрывается без вопросов и в процессах его нет. (Иль мож я чего не понимаю)
Delphi 6, Win2K, Excel2000.


Fantasist   (2002-12-02 20:56:00) [2]


> Илайдж (02.12.02 10:42)
> Как вариант - по крайней мере у меня эта проблема решена
> именно так.


Это уже было выше:


> Наталия © (28.11.02 07:25)
> E:=CreateOleObject("Excel.Application");
> ...
> E:=UnAssigned;


Но мы не любим позднее связывание. :)



> Excel выгружается, когда компонент TExcelApplication освобождает
> память, т.е. при TExcelApplication.Free;


И енто уже было:


> Fantasist © (29.11.02 00:18)
> Ну добавь Excel.Free.


Илайдж   (2002-12-02 10:42:00) [3]

Как вариант - по крайней мере у меня эта проблема решена именно так.

E: variant;

E := CreateOleObject("Excel.Application");
...
E.Quit;
E := 0;// вот это ОНО



OlDemon   (2002-12-02 10:21:00) [4]

А я использую позднее связывание и просто делаю FExcel:= nil
что освобождает память и убивает процесс. Может и вам поможет :)


AlexGreG   (2002-12-02 08:40:00) [5]

... разобрался

Excel выгружается, когда компонент TExcelApplication освобождает память, т.е. при TExcelApplication.Free;


AlexGreG   (2002-12-02 08:16:00) [6]

... добавочка

сам Excel, непонятно почему, выгружается из памяти при закрытии программы.

(я использую компоненту ExcelApplication с закладки Servers)


AlexGreG   (2002-12-02 08:14:00) [7]

Всем привет,

ответ прост:

x.Workbooks.Close(xlLCID);
x.Disconnect;
x.Quit;

хотя я даже не знаю, что за параметр такой
LCID, но у меня работает :~)

Если кто знает, что этот параметр значит, напишите пожалуйста.


Fantasist   (2002-11-29 06:37:00) [8]


> Деструктор TOleControl много чего освобождает


В смысле TOleServer.


Fantasist   (2002-11-29 00:18:00) [9]

Ну добавь Excel.Free.Деструктор TOleControl много чего освобождает.


Наталия   (2002-11-28 07:25:00) [10]

E:=CreateOleObject("Excel.Application");
...
E:=UnAssigned;


tga   (2002-11-28 07:02:00) [11]

Наталия © Спасибо за подсказку - но она НЕ РАБОТАЕТ. Вообще выдаётся ошибка при компиляции - неопределённый идентификатор "UnAssigned" :((((


Наталия   (2002-11-28 06:53:00) [12]

Excel.UnAssigned


Наверх

Титульная страница Поиск, карта сайта Написать письмо