Re[4]: Уж извините за назойливость
От: morok Россия  
Дата: 31.03.05 09:10
Оценка:
Я конечно понимаю, что наверное выгляжу глупо. Но если так, то уж пожалуйста ткните меня еще раз...

Вот код, который благодаря вам почти работает.


Excel::SheetsPtr spSheets = spTheWorkbook->GetSheets();
Excel::_WorksheetPtr spWorksheet = spSheets->GetItem(1);

//Получаем объединение 
RangePtr r1 = spWorksheet->GetRange( "A1:C2" );
RangePtr r2 = spWorksheet->GetRange( "D3:D8" );
RangePtr unionRange = m_spExcelApp->Union( r1, r2 );
                
                
//Добавляем новое имя , указывающее на созданное объединение, причем адрес получаем External
NamePtr name = spTheWorkbook->GetNames()->Add(
                   _variant_t("TestName"),
                   _variant_t( 
  unionRange->GetAddress( _variant_t(true), _variant_t(true),Excel::xlA1, _variant_t(true) )
                             ) 
                                              ); 
//А вот при попытке получить этот объект с которым связано имя программа вылетает
//с неизвестным исключением при попытке вызова метода GetRange 
//ни один из представленных ниже вариантов не работает                
//NamePtr foundName = spTheWorkbook->GetNames()->Item( _bstr_t("TestName") );
//RangePtr foundRange = m_spExcelApp->GetRange( foundName->GetRefersTo() );
//or
//RangePtr foundRange = m_spExcelApp->GetRange( _variant_t("TestName") );
//or
RangePtr foundRange = spWorksheet->GetRange( _variant_t("TestName") );

//Это для теста
foundRange->GetInterior()->ColorIndex = 5;



Пробовал указать привязку имени разными способами, то есть
был и такой
unionRange->GetAddress( _variant_t(true), _variant_t(true),Excel::xlA1 )
unionRange->GetAddress( _variant_t(false), _variant_t(false),Excel::xlA1 )

и т.п.

Ну ничего не могу понять, да и в хэлпе по VBA толком про такие вещи ничего не написано.
Помогите, чем сможите.

Спасибо.
Лень — это не врожденное чувство советского человека, а средство борьбы с неуемной, но бестолковой энергией начальника...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.