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

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

отчет в Excel е клепаю, а он потом остается задачей... [D5, NT4]


propeller ©   (2002-08-21 23:38:00) 

Здравствуйте, Мудрейшие!!!!

Я делаю довольно сложный отчет с помощью
MyExcel: variant;
...
MyExcel:=CreateObject("Excel.Application")
...
и через OLE все выгружаю
проблема в том, что после генерации отчета я хочу чтобы мое приложение "забыло" про Excel совсем (MyExcel надо как то освободить), а юзеру остался бы запущеный Excel с заполненным файлом, который он уже ручками сохранит там, или отмылит (ексельскми средствами) а не понравится - прибьет и перегенерит до победного.
VarClear не помогает, в результате после работы приходится руками убивать 10-15 висящих в списке процессов (даже не задач!)Excel"ей, что не представляется единственно верным.
А еще - отчет генерится несколько минут и если юзер в это время пытается открыть другой xls с диска, то зачастую он открывается в "моем" Экселе и все слетает (мой отчет начинает генерится в файл пользователя).
Надо, полагаю, создавать как-то такой Excel, который не воспринимал бы ничьих обращений (кроме моих) и потом "отпускать" его обычной задачей, что бы он не повисал нигде, НО КАК ??? .
Очень буду рад, если кто посоветует, спасибо!


propeller   (2002-08-22 23:35:00) [1]

Так ведь опосля
ExcelApp.Workbooks.Close;
ExcelApp.Application.Quit;
мой сгенеренный отчет, скажем так, исчезнет! а программно сохранять/диск засорять не хочу. Хочу (а точнее - надо, а еще точнее - требуют) чтоб просто Ехель оставался запущенный с открытой книгой-отчетом
а как после начала генерации отчета предотвратить открытие "моим" Ехелем книги, на которую дабл-кликнули в проводнике?


Jeer   (2002-08-21 23:53:00) [2]

try
ExcelApp:=GetActiveOleObject("Excel.Application");
except
ExcelApp:=CreateOleObject("Excel.Application");
end;

...
ExcelApp.Workbooks.Close;
ExcelApp.Application.Quit;
ExcelApp := UnAssigned;


Наверх

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