xlUDF
Область применения: Excel 2013 | Office 2013 | Visual Studio
Вызывает определяемую пользователем функцию (UDF). Эта функция позволяет библиотеке DLL вызывать пользовательские функции Visual Basic для приложений (VBA), функции языка макросов XLM и зарегистрированные функции, содержащиеся в других надстройках.
Excel12(xlUDF, LPXLOPER12 pxRes, int iCount, LPXLOPER12 pxFnRef,
LPXLOPER12 pxArg1, ...);
Параметры
pxFnRef (xltypeRef, xltypeSRef, xltypeStr или xltypeNum)
Ссылка на функцию, которую требуется вызвать. Это может быть ссылка на ячейку листа макросов, зарегистрированное имя функции в виде строки или идентификатор регистра функции. Для функций надстройки XLL, зарегистрированных с помощью xlfRegister или REGISTER с указанным аргументом pxFunctionText , идентификатор можно получить с помощью xlfEvaluate для поиска имени.
pxArg1, ...
Ноль или более аргументов для определяемой пользователем функции. При вызове этой функции в версиях, предшествующих Excel 2007, максимальное число дополнительных аргументов, которые можно передать, составляет 29, что равно 30, включая pxFnRef. Начиная с Excel 2007, это ограничение поднимается до 254, что составляет 255, включая pxFnRef.
Возвращаемое значение
Возвращает любое значение, возвращенное определяемой пользователем функцией.
Пример
В следующем примере тест TestMacro выполняется на листе Macro1 в BOOK1.XLS. Убедитесь, что макрос находится на листе с именем Macro1.
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlUDFExample(void)
{
XLOPER12 xMacroName, xMacroRef, xRes;
xMacroName.xltype = xltypeStr;
xMacroName.val.str = L"\044[BOOK1.XLSX]Macro1!TestMacro";
Excel12(xlfEvaluate, &xMacroRef, 1, (LPXLOPER12)&xMacroName);
Excel12(xlUDF, &xRes, 1, (LPXLOPER12)&xMacroRef);
return 1;
}