|
Вопрос # 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]:
Работает! Только на половину: Если не делать изменения в файле, то он из диспетчера задач не исчезает!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|