Excel - опциональные параметры в expression.Add()
От: Elena_ Россия  
Дата: 31.03.05 07:09
Оценка: 1 (1)
#Имя: FAQ.office.excel.add.optional
Здравствуйте, morok, Вы писали:

M>почему не работает вот этот код:

M>
M>NamePtr name = spTheWorkbook->GetNames()->Add();

M>//Пробовал делать вот так...
M>//NamesPtr names = spTheWorkbook->GetNames();
M>//NamePtr name = names->Add( _variant_t("TestName") );

M>//И вот так...
M>//NamePtr name = m_spExcelApp->GetNames()->Add( _variant_t("TestName") );
M>


M>Генерируется исключение при вызове функции Add объекта Names — CXX0030: Error: expression cannot be evaluated


Хотя все параметры формально Optional, на самом деле при отсутствии одних из них должны быть заданы другие — по смыслу

Из справки по Excel

expression.Add(Name, RefersTo, Visible, MacroType, ShortcutKey, Category, NameLocal, RefersToLocal, CategoryLocal, RefersToR1C1, RefersToR1C1Local)

expression Required. An expression that returns a Names object.

Name Optional Variant. Required if NameLocal isn’t specified. The text to use as the name (in the language of the macro). Names cannot include spaces and cannot look like cell references.

RefersTo Optional Variant. Required unless one of the other RefersTo arguments is specified. Describes what the name refers to (in the language of the macro, using A1-style notation). Note Nothing is returned if the reference does not exist.
...


Понятно, что если добавляем имя, то как минимум должно быть указано само имя и то, на что оно указывает.

То есть должно работать, например,
spTheWorkbook->GetNames()->Add(_variant_t("AAA"), _variant_t("=Лист1!$A$1:$A$5"));
Пользователь — друг программиста!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.