適用対象: Excel 2013 | Office 2013 | Visual StudioApplies to: Excel 2013 | Office 2013 | Visual Studio

ユーザー定義関数 (UDF) を呼び出します。この関数により、DLL は Visual Basic for Applications (VBA) のユーザー定義関数、XLM マクロ言語の関数、およびその他のアドインに含まれる登録済みの関数を呼び出すことができます。Calls a user-defined function (UDF). This function allows a DLL to call Visual Basic for Applications (VBA) user-defined functions, XLM macro language functions, and registered functions contained in other add-ins.

Excel12(xlUDF, LPXLOPER12 pxRes, int iCount, LPXLOPER12 pxFnRef,
LPXLOPER12 pxArg1, ...);


pxFnRef (xltypeRefxltypeSRefxltypeStr、または xltypeNum)pxFnRef (xltypeRef, xltypeSRef, xltypeStr or xltypeNum)

呼び出す関数の参照。これはマクロ シートのセルの参照、文字列としての関数の登録名、または関数の登録 ID になります。pxFunctionText 引数を指定した xlfRegister または REGISTER で登録された XLL アドイン関数の場合、xlfEvaluate を使用して名前を検索することで、この ID を取得できます。The reference of the function you want to call. This can be a macro sheet cell reference, the registered name of the function as a string, or the register ID of the function. For XLL add-in functions registered using xlfRegister or REGISTER with the argument pxFunctionText supplied, the ID can be obtained by using xlfEvaluate to look up the name.

pxArg1, ...pxArg1, ...

ユーザー定義関数に渡すゼロ以上の引数。Excel 2007 より前のバージョンでこの関数を呼び出す場合、関数に渡せる追加引数の最大数は 29 です (pxFnRef を含めると合計 30)。Excel 2007 以降では、この制限は 254 に引き上げられています (pxFnRef を含めると合計 255)。Zero or more arguments to the user-defined function. When you are calling this function in versions earlier than Excel 2007, the maximum number of additional arguments that can be passed is 29, which is 30 including pxFnRef. Starting in Excel 2007, this limit is raised to 254, which is 255 including pxFnRef.

戻り値Return value

ユーザー定義関数が返す値を返します。Returns whatever value the user-defined function returned.


次の例では、BOOK1.XLS のシート Macro1 に対して TestMacro を実行します。マクロが Macro1 という名前のシートにあることを確認してください。The following example runs TestMacro on sheet Macro1 in BOOK1.XLS. Make sure that the macro is on a sheet named Macro1.


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;

関連項目See also