Коректное закрытие Excel
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.142] |
|
|
Коректное закрытие Excel
|
Сообщ.
#1
,
|
|
|
|
Доброго времени суток, уважаемые знатоки. Возникла проблема при работе с Екселем.
На форме компоненты: ExcelApplication: AutoConnect – false, AutoQuit – false, ConnectKind – ckNewInstance. ExcelWorksheet: AutoConnect – false, ConnectKind – ckRunningOrNew. ExcelWorkbook: AutoConnect – false, ConnectKind – ckRunningOrNew. Объявляем переменную для имени файла: WideString FileName; ![]() ![]() //Открываем ексель ExcelApplication->set_Visible(true,true); ExcelApplication->Workbooks->Open(FileName); ExcelApplication->set_DisplayAlerts(false,false); ExcelWorkbook->ConnectTo(ExcelApplication->get_ActiveWorkbook()); ExcelWorkbook->Activate(0); ExcelWorksheet->ConnectTo(ExcelWorkbook->Sheets->get_Item(TVariant(1))); ExcelWorksheet->Activate(0); //Работа с екселем … //Закрываем ексель ExcelApplication->Quit(); ExcelWorksheet->Disconnect(); ExcelWorkbook->Disconnect(); ExcelApplication->Disconnect(); Проблема в том что при каждом открытии запускается новый процесс EXCEL.EXE но при закрытии не закрывается. За день программа будет открывать Ексель до 20-30 раз, это 200-300 Мб оперативки. Вопрос: Как правильно сделать так чтобы Каждый раз процесс закрывался. Заранее благодарен за любую помощь! P.S. все процессы Екселя закрываются автоматически после выхода из программы. |
|
Сообщ.
#2
,
|
|
|
|
Чего-то у меня подозрение, что надо поменять местами:
у Вас: ![]() ![]() ExcelApplication->Quit(); ExcelWorksheet->Disconnect(); ExcelWorkbook->Disconnect(); ExcelApplication->Disconnect(); Возможно так: ![]() ![]() ExcelWorksheet->Disconnect(); ExcelWorkbook->Disconnect(); ExcelApplication->Quit(); ExcelApplication->Disconnect(); По крайней мере в документации такой порядок вызова... P.S. Странно. Проверил - у меня и так и эдак работает нормально... |
|
Сообщ.
#3
,
|
|
|
|
пробовал даже такой вариант:
![]() ![]() ExcelWorksheet->Disconnect(); ExcelWorkbook->Close(TVariant(false), TNoParam(), TNoParam(), LOCALE_USER_DEFAULT); ExcelWorkbook->Disconnect(); ExcelApplication->Quit(); ExcelApplication->Disconnect(); результат тот же |
|
Сообщ.
#4
,
|
|
|
|
Странно. Проверил - у меня и так и эдак работает нормально..
|
|
Сообщ.
#5
,
|
|
|
|
Цитата Softor @ Странно. Проверил - у меня и так и эдак работает нормально.. Странно, а у меня не закрывается Ексель... Попробуйте несколько раз, открыть-закрыть. 1 раз и у меня работает нормально... |
|
Сообщ.
#6
,
|
|
|
|
Пробовал раз 20..
Прикреплённый файл project.zip (8.96 Кбайт, скачиваний: 71)
|
|
Сообщ.
#7
,
|
|
|
|
ТЕМА ЗАКРЫТА!
Мы оба делали все правильно! единственная проблемма состояла в том что у меня стоит Офис ХР, а компоненты Офис 2000. Softor, тебе огромное спс. P.S. протестил на 2003 офисе, работает "без чучка без задоринки" |
|
Сообщ.
#8
,
|
|
|
|
Цитата icemaster Softor, тебе огромное спс. Да было бы за что! |