![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правидлно закрыть Excel?
ВиТ © (2004-09-25 20:12:00)Я работаю с Excel с помощью переменной типа вариант:
var xl:Variant;и т.д.
xl:=CreateOLEObject('Excel.Application');
Когда программа завершает работу необходимо закрыть Excel командой
xl.quit. Но если он не был запущен, то возникает ошибка!
Ка проверить, связана ли xl c Екселем? т.е. запушен ли он.
Пробовал
if xl.Active then xl.quit
не помогает. Т.к. сама проверка xl.Active вызывает ошибку.
try.. except тоже не помогло:(
Sergey_Masloff (2004-09-26 00:01:00) [21]YurikGL © (25.09.04 23:57) [6]
Извини, тоже в хелп и в тот же раздел. Потому что как мне кажется налицо полное непонимание вопроса работы с серверами автоматизации через вариантные переменные. Или я ничего не понимаю...
YurikGL (2004-09-26 00:00:00) [22]
> Sergey_Masloff (25.09.04 23:55) [5]
Кстати, если app не связана с екслелем, то исключение вызывает не app.quit а app<>Unassigned так что сравнение не корректно.
Если только наступили на одни грабли, потом на другие :-)
Sergey_Masloff (2004-09-25 23:59:00) [23]Господин ВиТ © если вы используете функцию CreateOLEObject для присвоения указателя на интерфейс варианту то дайте себе труд ознакомиться с разделом справки по этой функции. Там 3 абзаца всего.
YurikGL (2004-09-25 23:57:00) [24]
> Sergey_Masloff (25.09.04 23:55) [5]
:-) Код конечно извращенный, но с ходу ничего другого не придумал...:-( Зато работает...
А если по уму, то проще сделать флажок типа запускался или нет вообще ексель во время текущего сеанса и перед выходом его проверять
Sergey_Masloff (2004-09-25 23:55:00) [25]
try
if app<>Unassigned then app.quit;
except
app.quit;
end;
Это называется пробуем наступить на грабли. Если получили по лбу то наступаем снова.
Sergey_Masloff (2004-09-25 23:53:00) [26]Зачем использовать quit?
YurikGL (2004-09-25 23:49:00) [27]
> ВиТ © (25.09.04 23:43) [2]
Дык это ж когда из делфи запускаешь EVariantInvalidOpError вываливается, а когда прогу не из делфи запускаешь, все будет OK
ВиТ (2004-09-25 23:43:00) [28]У меня всё равно не работает:(
try
if app<>Unassigned then app.quit;
except
app.quit;
end;
и в результате:
---------------------------
Debugger Exception Notification
---------------------------
Проект mm.exe вызвал исключение класса EVariantInvalidOpError с сообщением 'Invalid variant operation'. Процесс остановлен. Используйте Шаг или Запуск для продолжения.
---------------------------
OK Help
---------------------------
YurikGL (2004-09-25 23:21:00) [29]
> try.. except тоже не помогло:(
Код в студию!!!
> Ка проверить, связана ли xl c Екселем? т.е. запушен ли
> он.
Запущен ексель или нет проверяется поиском окна
У меня сработал следующий код
app:variant
try
if app<>Unassigned then app.quit;
except
app.quit;
end;
Кстати, если app не связана с екслелем, то исключения не возникает, а если связана, то возникает. Почему - не знаю.