Я конечно понимаю, что наверное выгляжу глупо. Но если так, то уж пожалуйста ткните меня еще раз...
Вот код, который благодаря вам почти работает.
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 толком про такие вещи ничего не написано.
Помогите, чем сможите.
Спасибо.
Лень — это не врожденное чувство советского человека, а средство борьбы с неуемной, но бестолковой энергией начальника...