Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2012, 08:29   #1
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию Закрытие созданного процесса Excel

Элементарно. Две кнопки. В одной создаётся процесс Excel и производятся операции:

Код:
Excel:=CreateOleObject('Excel.Application');
//и так далее
В другой процесс нужно закрыть:

Код:
Excel.Quit;
Так вот, при нажати второй кнопки реального закрытия процесса не происходит. Процесс закрывается только при закрытии всего приложения. Вопрос: как закрыть процесс немедленно, но не закрывая приложение? Неужели его нужно находить и "убивать"?

Последний раз редактировалось AndrzejX; 07.08.2012 в 08:32.
AndrzejX вне форума Ответить с цитированием
Старый 07.08.2012, 09:29   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А не пробовали объявить глобальную объектную переменную?
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.08.2012, 09:49   #3
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию

Я - пробовал. А вы?
AndrzejX вне форума Ответить с цитированием
Старый 07.08.2012, 09:57   #4
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

У меня никогда не возникало надобности создавать отдельный процесс Экселя. Кстати из какого приложения Вы его создаете?
В ВБА вот это:
Excel:=CreateOleObject('Excel.Appli cation');
неправильно. Вам надо искать методы удаления объектов того языка, на к-ром Вы их создаете. А это форум по Microsoft Office Excel.
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 07.08.2012, 10:37   #5
AndrzejX
Пользователь
 
Регистрация: 12.11.2008
Сообщений: 55
По умолчанию

Хм... Спасибо за ответы. Я работаю в Delphi. Возможно, не туда поместил тему...
AndrzejX вне форума Ответить с цитированием
Старый 07.08.2012, 11:28   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

То есть надо отвязать объектную переменную от приложения. В VB (VBA, VBS) это можно сделать так:
Код:
Excel.Quit
Set Excel = Nothing
Как в Delphi - не знаю.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 07.08.2012, 11:38   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
Как в Delphi - не знаю.
А там как очень по-разному... я больше серверами офисными пользовался, а не как OLE объект создавал, но самый лучший путь перед выходом из приложения позакрывать все workbook-и и проследить чтобы они закрылись. Нередко запрос на подтверждение сохранения (особенно в скрытой сессии) подвешивал процесс... да и разного рода ошибки не давали стопроцентно закрываться... так что вариантов море...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие активного процесса alexey_kip Общие вопросы C/C++ 6 03.12.2011 18:31
Закрытие основного процесса через dll godlsd Общие вопросы Delphi 13 13.09.2010 10:00
закрытие чужого процесса Dimon Win Api 7 12.05.2010 12:01
Закрытие ветви процесса SauronX Win Api 2 07.02.2009 16:18
Удаление/закрытие процесса Djaconda Win Api 2 13.06.2008 13:11