А если быть еще точнее, то Будет еще одна ошибочка связанная с этими ненавистными кавычками.
_bstr_t sAddr1 = r1->GetAddress(_variant_t(true), _variant_t(true),Excel::xlA1, _variant_t
(true) );
_bstr_t sAddr2 = r2->GetAddress(_variant_t(true), _variant_t(true),Excel::xlA1, _variant_t(true) );
_bstr_t sAddr = _bstr_t("=") + sAddr1 + _bstr_t(";") + sAddr2;
//-------А Вот на этом месте и вылетает,но если получить строку таким образом, то все нормально
//_bstr_t sAddr = _bstr_t("=\"") + sAddr1 + _bstr_t(";") + sAddr2 + _bstr_t("\"");
//или
//_bstr_t sAddr = sAddr1 + _bstr_t(";") + sAddr2;
NamePtr name = pBook->GetNames()->Add(_variant_t("TestName"), sAddr);
//------------------------------------------------------------------
Вот так почему-то тоже не работает,
RangePtr foundRange = pXL->GetRange( _variant_t("TestName") );
не стал копаться, так как можно по-другому, и надо мне получать через имя
NamePtr foundName = pBook->GetNames()->Item("TestName");
RangePtr foundRange = pXL->GetRange(foundName.GetRefersTo());
Однако вышеприведенная строка тоже не будет работать по той же причине — из-за ковычек
То есть объект Name возвращает ссылку через RefersTo в виде
"="[Книга1]Лист1!$A$1:$A$3""
А для использования этой строки в получении Range'a необходимо передать строку в виде
"=[Книга1]Лист1!$A$1:$A$3"
или
"[Книга1]Лист1!$A$1:$A$3"
— символ " — обозначает строку
Вот такая вот ф...я выходит.
В общем достаточно неудобная вещь. Получается нельзя напрямую использовать результат одной функции(Name.RefersTo()) как аргумент другой функции(Application.GetRange(Name.RefersTo()), сначала необходимо результат преобразовать, а потом уже использовать. Мне кажется это какая-то недоработка компании MS. Хотя может я просто не в курсе чего-то.
Лень — это не врожденное чувство советского человека, а средство борьбы с неуемной, но бестолковой энергией начальника...