Я использую ExcelDNA для написания пользовательских UDF на С#, тем не менее, это общая проблема с Excel и оценкой формул.
Мой единственный вопрос: я делаю что-то не так (возможно, неправильное определение UDF) или это проблема с Excel?
Спасибо за помощь.
=========================================================================
UDF
Допустим, я определяю UDF следующим образом:
[ExcelFunction(IsMacroType = true, Name = "MyTest")]
public static string MyTest()
{
return "MyTest";
}
Работающий
Следующие вычисления формулы работают нормально (результат "MyTest"):
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "MyTest()");
Не работает
Принимая во внимание, что эта оценка не работает (результатом будет «ExcelErrorName»):
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "CONCAT(MyTest(); MyTest())");
Я попробовал несколько вещей и понял, что можно создать столько UDF, сколько вы хотите, а также вкладывать их друг в друга. Но как только вы передаете любые два (или более) ваших собственных UDF в качестве параметров любой другой функции, Excel не может вычислить формулу.
Я также попытался использовать метод взаимодействия с Excel, который возвращает соответствующую ошибку COM:
var app = ExcelDnaUtil.Application as Application;
var result = app.Evaluate("CONCAT(MyTest(), MyTest())");
Примеры
Работающий
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "MyTest2(MyTest2(MyTest2()))");
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "MyTest3(MyTest(); CONCAT(\"A\";\"B\"))");
Не работает
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "MyTest2(MyTest(); MyTest())");
var evaluation = XlCall.Excel(XlCall.xlfEvaluate, "MyTest2(MyTest(); MyTest3())");