Не работает такой вариант ч/з интерфейсы.
Я думаю, причина в том, что при вызове из VBA Excel неявно подставляет значения из Range и передает в функцию уже массив, а при вызове из интерфейсов такого преобразования не происходит и функция не обрабатывает эти значения.
Пробовал передать как непосредственно com-интерфейс, так и variant с помощью класса COMVariant::CreateFromCOM(range)
Кстати, если кому интересно, значения для FormulaArray ч/з COM-интерфейс надо передавать так
X++:
FormulaArray("={1;1:2;2:3;2:4;2:5;1:6;2:7;4:8;2:9;1:10;2}");