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;
}

См. также