Добрый вечер. Возник вопрос при работе на СВ5 с TExcelApplication. Как сделать в консольной программке, чтобы Ексель (в программе объект создается динамически) после закрытия программы не закрывался. Если я не освобождаю память из-под объекта, Ексель не закрывается, но впоследствии при обычном закрытии ругается на недопустимую операцию. Подскажите кто-нибудь, как правильно все сделать. Заранее спасибо.
Попробуй освободить интерфейсы методом Release() перед зарытием проги.
При чем освобождению подлежат все COM-интерфейсы вызывавшиеся в программе (все Range'ы, Workbook'и, Worksheet'ы и т.п.).
Здравствуйте, A3, Вы писали:
A3>Добрый вечер. Возник вопрос при работе на СВ5 с TExcelApplication. Как сделать в консольной программке, чтобы Ексель (в программе объект создается динамически) после закрытия программы не закрывался. Если я не освобождаю память из-под объекта, Ексель не закрывается, но впоследствии при обычном закрытии ругается на недопустимую операцию. Подскажите кто-нибудь, как правильно все сделать. Заранее спасибо.
В свое время хотел того же от Word. К конце концов не стал кидать на форму
компонент стандартные компоненты, а написал в процедуре формирования отчета так:
void __fastcall TForm1::DoRep()
{
TWordApplication* WordApplication=new TWordApplication(NULL);
TWordDocument* WordDocument=new TWordDocument(NULL);
и т.п.
//непосредственно формирование отчета
WordApplication->Visible=true;
}
Суть: Объекты необходимых классов формируются динамически и не вызывать для них delete и методы Release иначе все будет закрыватся. Понимаю что не очень корректно, но по крайне мере после закрытия программы Word остается на месте и потот никаких ошибок не возникает. Думаю что и для Excel подойдет.