| 
| 
 | Вопрос # 1 614/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты! Времени катастрофически нет читать всё, работы - море (а я не прорамист). Извините, если повторюсь.Создаю связь с excel через OLE. Как грамотно закрыть процесс Excel.exe, чтобы он не отображася в инспекторе и не "ел" памать. 10 раз вызовешь excel, и 10 раз он останется даже после закрытия и программы, и Excel. Пожалуйста, подскажите! Читала статью - не помогло!
 
|  |   Вопрос задала: Тамара (статус: Посетитель)Вопрос отправлен: 23 мая 2008, 21:51
 Состояние вопроса: открыт, ответов: 2.
 |  Ответ #1. Отвечает эксперт: ANBsoft Здравствуйте, Тамара!Tckb jnrhsdftnt Excel через
 ExcelApp:=CreateOleObject('Excel.Application');
 то закрыть попробуйте через
 if Not VarIsEmpty(ExcelApp) then begin
 ExcelApp.DisplayAlerts:=False;  // Discard unsaved files....
 ExcelApp.Quit;
 end;
 Успехов.
 
|  | Ответ отправил: ANBsoft (статус: Студент)Время отправки: 24 мая 2008, 00:29
 Оценка за ответ: 5
 |  Ответ #2. Отвечает эксперт: Feniks Здравствуйте, Тамара!Наверное я сейчас повторюсь 256 раз. ;-)
 Если вы так интенсивно используете Excel, то лучше экспортируйте свои данные не через OLE, а на прямую в файл, и потом делайте с ним что хотите.
 На этом портале есть статейка "Delphi 4: Автоматизация приложений MS® Office® для эффективного анализа результатов. Глава 1. Работа с MS Excel."
 А также есть пару компонентов для удобной работы с Excel-ем:
 1. XLSReadWrite - название говорит само за себя.
 2. vtkExport - библиотека, предназначенная для экспорта данных из Ваших программ в форматы Excel и HTML. Работает очень быстро и не требует наличие установленного MS Office, а работает с файлом напрямую.
 Желаю удачи...
 
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 26 мая 2008, 16:23
 Оценка за ответ: 4
 Комментарий к оценке: Спасибо, но немного не в тему. Я интересовалась именно OLE... И статью я читала. |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 27 мая 2008, 19:33; участников в обсуждении: 2. 
|   | volonter (статус: Посетитель), 24 мая 2008, 17:55 [#1]:Здравствуйте, Тамара procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
 //  если запущен Excel то автоматически его закрываем
 // MyExcel типа  Variant;
 if not VarIsEmpty(MyExcel) then
 MyExcel.Quit;
 end;
 |  
|   | Тамара (статус: Посетитель), 24 мая 2008, 18:38 [#2]:Просто Quit не работает. Даже книгу не закрывает. |  
|   | volonter (статус: Посетитель), 24 мая 2008, 18:50 [#3]:Если Excel запускался через myExcel:=CreateOleObject('Excel.Application') (а иначе я не представляю как), то он точно так зактоется. Только что проверил. Если у вас, Тамара, это не получится и дальше, я могу выслать пример
 |  
|   | Тамара (статус: Посетитель), 24 мая 2008, 19:19 [#4]:Спасибо. Запускался именно так. Я попробую ещё раз в понедельник (дома у меня другая версия). Сообщу, что получилось. Но у меня Excel  и без делфи после закрытия иногда продолжал "висеть" в диспетчере задач. Может, в этом дело? Вобщем, проверю ещё раз. |  
|   | Тамара (статус: Посетитель), 27 мая 2008, 19:33 [#5]:Работает! Только на половину: Если не делать изменения в файле, то он из диспетчера задач не исчезает! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |