Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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

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

volonter (статус: Посетитель), 24 мая 2008, 18:50 [#3]:

Если Excel запускался через
myExcel:=CreateOleObject('Excel.Application') (а иначе я не представляю как), то он точно так зактоется. Только что проверил. Если у вас, Тамара, это не получится и дальше, я могу выслать пример
Тамара

Тамара (статус: Посетитель), 24 мая 2008, 19:19 [#4]:

Спасибо. Запускался именно так. Я попробую ещё раз в понедельник (дома у меня другая версия). Сообщу, что получилось. Но у меня Excel и без делфи после закрытия иногда продолжал "висеть" в диспетчере задач. Может, в этом дело? Вобщем, проверю ещё раз.
Тамара

Тамара (статус: Посетитель), 27 мая 2008, 19:33 [#5]:

Работает! Только на половину: Если не делать изменения в файле, то он из диспетчера задач не исчезает!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.02 сек.