Re[6]: Уж извините за назойливость
От: Elena_ Россия  
Дата: 31.03.05 18:54
Оценка: 1 (1)
Здравствуйте, morok, Вы писали:

M>Дело вот в чем. При вожу код на VBA


M>
M>'Create two ranges and then union them
M>Set r1 = range("a1", "a2")
M>Set r2 = range("a1", "b2")
M>Set ur = Union(r1, r2)

M>'Create new Name object and bind it with the range union
M>Set newName = Application.Names.Add("TestName", ur.Address(True, True, xlA1, True))

M>'Get name object from the application
M>Set foundName = Application.Names.Item("TestName")

M>str = Replace(foundName.RefersTo, Chr(34), "")
M>'Get range from name
M>Set r = Application.range(str)

M>r.Interior.ColorIndex = 5
M>


Можно, наверное, и так, но я бы сделала типа
    _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;
        
    NamePtr name = pBook->GetNames()->Add(_variant_t("TestName"), sAddr);
    RangePtr foundRange = pXL->GetRange( _variant_t("TestName") );


потому что если устанавливать вручную имя для несвязанного диапазона, то лист повторяется для каждого диапазона, наверное, Excel'ю "так понятнее". Точка с запятой в Russian locale, в English — запятая, это можно через Internatonal узнавать в произвольном случае
Пользователь — друг программиста!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.