Re[7]: Уж извините за назойливость
От: morok Россия  
Дата: 01.04.05 10:24
Оценка:
А если быть еще точнее, то Будет еще одна ошибочка связанная с этими ненавистными кавычками.
_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. Хотя может я просто не в курсе чего-то.
Лень — это не врожденное чувство советского человека, а средство борьбы с неуемной, но бестолковой энергией начальника...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.