
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.193] |
![]() |
|
![]() |
|
|
Ребят, всем привет. Использую для работы с Excel следующую конструкцию. По её завершению в процессах остается все равно висеть злосчастный EXCEL.EXE. Как его оттуда убрать?
![]() ![]() var Excel : Variant; procedure TMainForm.LoadFromExcel(); begin //создаем объект Excel := CreateOleObject('Excel.Application'); //что то с ним делаем Excel.DisplayAlerts := False; //блокировка уведомлений о сохранении Excel.WorkBooks[1].SaveAs(ExcelFileName); try Excel.Workbooks.Close; except end; end; |
Сообщ.
#2
,
|
|
|
Цитата seska @ По её завершению в процессах остается все равно висеть злосчастный EXCEL.EXE Так ты его и не закрываешь, закрываешь только одну вкладку. Вероятно, надо вызывать что-то вроде Excel.Quit |
Сообщ.
#3
,
|
|
|
Excel.Quit тоже не работает. Вероятно нужно что-то вроде этого, а что конкретно я к сожалению не могу найти ;(
|
Сообщ.
#4
,
|
|
|
в DRKB -> ActiveX, COM и Другие технологии -> Работа с приложениями Microsoft Office -> Работа с Microsoft Excel -> Как зыкрыть Excel говорят что вот так
![]() ![]() try Ex1.Workbooks.Close(LOCALE_USER_DEFAULT); Ex1.Disconnect; Ex1.Quit; Ex1:=nil; except end; |
Сообщ.
#5
,
|
|
|
seska, для получения результата нужно выполнить следующее:
![]() ![]() var tmpExcel: variant; begin // создаем объект tmpExcel:=CreateOleObject('Excel.Application'); // что то с ним делаем tmpExcel.Workbooks.Add; // добавляем один лист в книгу // сохраняем полученный результат tmpExcel.DisplayAlerts:=false; // блокируем уведомления о сохранении tmpExcel.ActiveWorkbook.SaveAs(extractfilepath(application.ExeName) + '1.xls'); tmpExcel.ActiveWorkbook.Close end; з.ы.: во вложении пример с использованием данного кода ... Прикреплённый файл ![]() |
Сообщ.
#6
,
|
|
|
Спасибо, VahaC! Вроде процесс удаляется теперь. Только код немного видоизменил, так он не компилируется.
![]() ![]() try Excel.Workbooks.Close; except end; Excel.Quit; Excel := null; Добавлено andrew.virus да, тут задача чтобы Excel была глобальной переменной. Если она локальная, как у тебя, то после выхода из процедуры процесс действительно исчезает |
Сообщ.
#7
,
|
|
|
Есть замечательная функция Excel := Unassigned. Перед присвоением не забыть сделать Quit.
|
Сообщ.
#8
,
|
|
|
Excel := nil тоже вполне сработает
|