Пользовательские функции в надстройке автоматизации ведут себя по-разному Excel 2007 - PullRequest
1 голос
/ 04 марта 2009

Я создал надстройку автоматизации в C # .NET и у меня есть shim dll. В shim dll есть все определяемые пользователем методы, которые вызывают соответствующие методы в сборке .NET.

Проблема, с которой я сталкиваюсь, связана с Excel 2007.

В Excel 2003 1. Добавьте новую форму на лист 2. Вставьте >> Функция >> СУММА. Откроется диалоговое окно «Аргументы функции» 3. нажмите на вновь вставленную фигуру вместо ячейки Примечание: ничего не происходит, и значение ячейки не вводится автоматически в поле аргумента

Теперь в Excel 2007, 1. Вставьте новую форму 2. Вкладка ленты формул >> Вставить функцию >> СУММА. Диалог Аргументы функций подходит 3. Нажмите на вновь вставленную форму Обратите внимание, что теперь отображается диалоговое окно с сообщением «Формула, которую вы ввели содержит ошибку "

В этом диалоговом окне отображается предопределенная функция (SUM). Если я выберу свой функция из списка вместо SUM, диалоговое окно ошибки не отображается и диалоговое окно «Аргумент функции» просто исчезает. Затем ячейка показывает ошибку SmartTag.

Есть ли что-то, что нужно поместить в dll SHIM для каждой функции? Как атрибут или что-то, что будет отображать это сообщение об ошибке. Или, может быть какое-то специальное значение, которое возвращается методом, чтобы сказать, что аргумент сгенерировал ошибку.

Функции, определенные в прокладке COM, имеют вид:

STDMETHOD(GetArea)(MyExcelAddIn::Range *r, double *pRetVal)
{
   return m_pMyUDF->GetArea(r, pRetVal);
}

1 Ответ

0 голосов
/ 19 марта 2009

Я связался с Microsoft, и они подтвердили, что это ошибка в продукте Excel. Я опубликую ссылку на ошибку, когда получу ее от них.

...