![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите! плиззз. 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