Я использую Excel-DNA для создания UDF в Excel и NetOffice для независимых от автоматизации вызовов автоматизации. Внутри функции макро-типа, я могу использовать, чтобы получить следующую формулу из ячейки:Проверить формулу массива в макро-стиле Excel UDF
ExcelReference cellRef; // of course in reality this is assigned
var formula = (string)this.excelCall(XlCall.xlfGetFormula, cellRef);
Кроме того, хотя, я хотел бы знать, является ли частью формулы массива, а если так какова его протяженность. Использование автоматизации Excel, можно использовать что-то вроде:
Range("A1").HasArray
Range("A1").CurrentArray.Address
Однако, Microsoft препятствовать использованию автоматизации в ОДС называет: https://support.microsoft.com/en-us/kb/301443
Итак, есть ли способ, чтобы получить свойства HasArray и CurrentArray через C API, или кто-нибудь знает, хорошо ли (в контексте UDF, объявленного как макро-тип) использовать автоматизацию?
'HasArray' разрешен внутри UDF. Он возвращает правильный результат. 'Функция arr (r As Range): arr = r.HasArray: End Function' действует как UDF. Что обескураживает (и вообще предотвращается) делает _modifications_ в любой другой части «Книги» или «Рабочего листа» из UDF. Обычно вам разрешается вынимать информацию внутри UDF (за некоторыми исключениями). –
Thanks Byron - тестирование на этом с использованием автоматизации показало, что для меня HasArray, похоже, работает и не вызывает никаких проблем, но что CurrentArray может возвращать неправильный ответ при вызове в UDF, возвращая отдельную ячейку, даже если она является частью более крупный массив –