Я создал надстройку автоматизации в 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);
}