Пользовательские функции в надстройке автоматизации ведут себя по-разному Excel 2007
-
03-07-2019 - |
Вопрос
Я создал надстройку для автоматизации в C # .NET и у меня есть shim dll. В shim dll есть все определяемые пользователем методы, которые вызывают соответствующие методы в сборке .NET.
Проблема, с которой я сталкиваюсь, связана с Excel 2007.
В Excel 2003 1. Добавьте новую форму на лист 2. Вставьте > > Функция > > SUM. Откроется диалоговое окно «Аргументы функции» 3. нажмите на вновь вставленную фигуру вместо ячейки Примечание: ничего не происходит, и значение ячейки не вводится автоматически в окно аргумента
Теперь в Excel 2007, 1. Вставьте новую форму 2. Вкладка «Лента формул» > > Вставить функцию > > SUM. Диалог Аргументы функций подходит 3. Нажмите на вновь вставленную форму Обратите внимание, что теперь отображается диалоговое окно с сообщением об ошибке: "Введенная вами формула содержит ошибку "
Это диалоговое окно открывается для предопределенной функции (SUM). Если я выберу свой функция из списка вместо SUM, диалоговое окно ошибки не отображается и диалоговое окно «Аргумент функции» просто исчезает. Затем ячейка показывает ошибку SmartTag.
Есть ли что-то, что нужно поместить в dll SHIM для каждой функции? Как атрибут или что-то, что будет отображать это сообщение об ошибке. Или, может быть какое-то специальное значение, которое возвращается методом, чтобы сказать, что аргумент сгенерировал ошибку.
Функция, определенная в COM-шимме, выглядит следующим образом:
STDMETHOD(GetArea)(MyExcelAddIn::Range *r, double *pRetVal)
{
return m_pMyUDF->GetArea(r, pRetVal);
}
Решение
Я связался с Microsoft, и они подтвердили, что это ошибка в продукте Excel. Я опубликую ссылку об ошибке, когда получу ее от них.