Обстановка: Существует объект CExcelWrap, который помогает прогеру общаться с Excel. У него есть метод:
bool CExcelWrap::SetCellsWrapedStyle(long rowBegin, long columnBegin, long rowEnd, long columnEnd, bool enable)
{
if(m_bConnected) //флаг того что c Excel соединились
{
try
{
Range* pAllCells = new Range(m_pWorkSheet->GetCells());
VARIANT c1 = pAllCells->GetItem(COleVariant(rowBegin),COleVariant(columnBegin));
VARIANT c2 = pAllCells->GetItem(COleVariant(rowEnd),COleVariant(columnEnd));
if(c1.vt == VT_DISPATCH && c2.vt == VT_DISPATCH)
{
Range* pf = new Range(m_pWorkSheet->GetRange(c1,c2));
COleVariant vBool(short(enable),VT_BOOL);
pf->SetWrapText(vBool);
}
delete pAllCells;
}
catch (COleDispatchException* e)
{
m_bConnected = false;
throw e;
}
}
return m_bConnected;
}
Итак, объект CExcelWrap создается, подключается к Excel, открывает пустую книгу:
bool CExcelWrap::OpenFile(const char* FileName)
{
if(m_bConnected)
{
try
{
Workbooks Workb(m_Application->GetWorkbooks());
Workb.Add(COleVariant(FileName ? FileName : "Книга"));
if(m_pWorkSheet) // объект определен в классе CExcelWrap как _Worksheet
delete m_pWorkSheet;
m_pWorkSheet = new _Worksheet(m_Application->GetActiveSheet());
}
catch (COleDispatchException* e)
{
m_bConnected = false;
throw e;
}
}
return m_bConnected;
}
затем для определенных ячеек вызывается функция CExcelWrap::SetCellsWrapedStyle и объект отвязывается от Excel'я. Юзер сам прикрывает окошко Excel'я и объект деструктирует (

).
Однако Excel после этого остается в памяти (причем именно при вызове SetCellsWrapedStyle!!! — в других случаях этого не происходит).
Если же в той же так сказать сессии заново запустить эту работу, то SetCellsWrapedStyle отработает вроде бы нормально... Но!!! При показе окна Excel'я там отсутствует какой-то объект отвечающий за отображение ячеек!! то есть окно екселя работает а то что внутри становится прозрачным!!
В чем проблема? Как мне правильно устанавливать свойство ячейки о автопереносе текста?