適用されますExcel 2013 |。Office 2013 |Visual StudioApplies to: Excel 2013 | Office 2013 | Visual Studio

Microsoft Excel ワークシートの内部関数、マクロ シート関数やコマンド、または XLL 専用の特殊関数やコマンドを DLL、XLL、またはコード リソース内部から呼び出します。Calls an internal Microsoft Excel worksheet function, macro sheet function or command, or XLL-only special function or command, from within a DLL/XLL or code resource.

すべての最新バージョンの Excel では、 Excel4をサポートします。All recent versions of Excel support Excel4. Excel 2007 以降では、 Excel12がサポートされています。Starting in Excel 2007, Excel12 is supported.

�����̊֐��́AExcel �� DLL �܂��� XLL �ɐ����n���Ă���ꍇ�ɂ̂݁A�Ăяo�����Ƃ��ł��܂��B�����̊֐��́AExcel �� Visual Basic for Applications (VBA) �ւ̌Ăяo�����ĊԐړI�ɐ����n���Ă���ꍇ�ɂ�Ăяo����邱�Ƃ�����܂��B����ȊO�̎��ɁA�����̊֐���Ăяo�����Ƃ͂ł��܂���B���Ƃ��΁ADllMain �֐��ɑ΂���Ăяo���̊Ԃ�A�I�y���[�e�B���O �V�X�e���� DLL ��Ăяo���Ă���Ƃ���A�����̊֐���Ăяo�����Ƃ͂ł��܂���BDLL ���쐬�����X���b�h�����A�����̊֐���Ăяo�����Ƃ͂ł��܂���BThese functions can be called only when Excel has passed control to the DLL or XLL. They can also be called when Excel has passed control indirectly via a call to Visual Basic for Applications (VBA). They cannot be called at any other time. For example, they cannot be called during calls to the DllMain function or other times when the operating system has called the DLL, or from a thread created by the DLL.

Excel4Excel12関数は、スタック上の可変長リストとして、引数を受け取るが、 Excel4v と Excel12v関数は、配列として引数をそのまま使用します。The Excel4v and Excel12v functions accept their arguments as an array, whereas the Excel4 and Excel12 functions accept their arguments as a variable-length list on the stack. その他のすべての点では、 Excel4Excel4vと同じ動作し、 Excel12Excel12vと同じ動作です。In all other respects, Excel4 behaves the same as Excel4v, and Excel12 behaves the same as Excel12v.

int Excel4(int iFunction, LPXLOPER pxRes, int iCount, LPXLOPER argument1, ...);
int Excel12(int iFunction, LPXLOPER12 pxRes, int iCount, LPXLOPER12 argument1, ...);


iFunction(int)iFunction (int)

�Ăяo���R�}���h�A�֐��A�܂��͓���֐���������l�B iFunction �̗L���Ȓl�̈ꗗ�́A���̉���Q�Ƃ��Ă��������BA number that indicates the command, function, or special function you want to call. For a list of valid iFunction values, see the following Remarks section.


( Excel4) とは、 XLOPERXLOPER12 ( Excel12) と評価された関数の結果を保持するへのポインター。A pointer to an XLOPER (with Excel4) or an XLOPER12 (with Excel12) that will hold the result of the evaluated function.

iCount(int)iCount (int)

関数に渡されるそれ以降の引数の数。The number of subsequent arguments that will be passed to the function. 2003 までのバージョンの Excel は 0 から 30 までの任意の数になります。In versions of Excel up to 2003, this can be any number from 0 through 30. Excel 2007 以降では、これは、0 255 までからの任意の数。Starting in Excel 2007, this can be any number from 0 through 255.

argument1、.(LPXLOPERまたはLPXLOPER12)argument1, ... (LPXLOPER or LPXLOPER12)

関数の省略可能な引数です。The optional arguments to the function. すべての引数は、 XLOPERまたはXLOPER12の値へのポインターである必要があります。All arguments must be pointers to XLOPER or XLOPER12 values.

�߂�lReturn value

以下の整数 (int) の値のいずれかを返します。Returns one of the following integer (int) values.

Value リターン コードReturn code 説明Description
関数は正常に呼び出されます。The function was called successfully. 関数が、Excel のエラー値を返さなかったことはありません。アウトを見つけるには、型と結果の_pxRes_パラメーターの値を表示する必要があります。This does not mean that the function did not return an Excel error value; to find that out, you must look at the type and value of the resulting pxRes parameter.
コマンドまたは関数が異常終了しました (内部アボート)。The command or function was terminated abnormally (internal abort). これは、XLM マクロ シートでCLOSEを呼び出すことによって自動的に閉じる場合、または Excel がメモリが不足している場合に発生します。This can occur if an XLM macro sheet closes itself by calling CLOSE, or if Excel is out of memory. Excel では、このエラーが返された場合、呼び出し元の関数は即座に終了する必要があります。If Excel returns this error, the calling function must exit immediately. DLL は、 xlFreeを終了する前にのみ呼び出すことが許可されます。The DLL is permitted to call xlFree only before exiting. 他のすべての c 言語の API 呼び出しは許可されていません。All other calls to the C API are not permitted. ユーザーは [ファイル] メニューの [上書き保存] コマンドを使用して対話的に作業を保存できます。The user can save any work interactively by using the Save command on the File menu.
指定された関数の数が正しくありません。Xlcall.h ヘッダー ファイルの定数を使用している場合、実行中の Excel のバージョンでサポートされていない何かを呼び出さない限り、これが起こることはありません。An invalid function number was supplied. If you are using constants from the Xlcall.h header file, this should not occur unless you are calling something that is not supported in the version of Excel you are running.
無効な数の引数が入力されました。An invalid number of arguments was entered. Excel 2003 までのバージョンでは、関数が受け取ることができます引数の最大数は 30 です。In versions up to Excel 2003, the maximum number of arguments any function can take is 30. Excel 2007 以降では、最大数は、255 です。Starting in Excel 2007, the maximum number is 255. いくつかは、引数の数が固定または最小値を必要があります。Some require a fixed or minimum number of arguments.
無効のXLOPERまたはXLOPER12は、関数に渡されたか、間違った型の引数が使用されました。An invalid XLOPER or XLOPER12 was passed to the function, or an argument of the wrong type was used.
スタック オーバーフローが発生しました。A stack overflow occurred. XlStackを使用すると、スタック上の部屋の左側の量を監視できます。Use xlStack to monitor the amount of room left on the stack. 可能な場合は、ローカル (自動) の非常に大きな配列とスタック上の構造体の割り当てを回避します。静的となってください。Avoid allocating very large local (automatic) arrays and structures on the stack where possible; make them static. (スタック オーバーフローが検出されることがなく発生する可能性に注意してください)。(Note that a stack overflow might occur without being detected.)
コマンドと等価の関数が失敗しました。これは、[マクロ エラーの警告] ダイアログボックスを表示するマクロ コマンドと等価です。A command-equivalent function failed. This is equivalent to a macro command displaying the macro error alert dialog box.
現在のセルの後に再計算することになる予定ですので、まだ計算されていないセルを逆参照しようとしました。An attempt was made to dereference a cell that has not been calculated yet, because it is scheduled to be recalculated after the current cell. この例では、DLL コントロールを Excel にすぐに返すか。In this case, the DLL should return control to Excel immediately. DLL は、 xlFreeを終了する前にのみ呼び出すことが許可されます。The DLL is permitted to call xlFree only before exiting. 他のすべての c 言語の API 呼び出しは許可されていません。All other calls to the C API are not permitted. 先の詳細については関数およびできますが再計算されていない、 Excel のコマンド、関数、および状態を表示するセルの値にアクセスできません。For more information about which functions can and cannot access the values of cells that have not been recalculated, see Excel Commands, Functions, and States.
ブックの再計算がマルチ スレッドで実行中に、スレッド セーフではない、あるいはスレッド セーフでない可能性がある関数を呼び出そうとしました。An attempt was made to call a function that is not, or might not be, thread safe during a multithreaded recalculation of the workbook.
Excel 2007 以降では、この値が返されると同様のスレッド セーフで XLL ワークシート関数の宣言内でのみです。Starting in Excel 2007, this value is returned, and only within XLL worksheet functions declared as thread safe.
非同期関数のハンドルが正しくありません。The asynchronous function handle is invalid.
この値は、Excel 2010 でのみ使用されます。This value is used only by Excel 2010.
クラスターでは、呼び出しはサポートされていません。The call is not supported on clusters.
この値は、Excel 2010 でのみ使用されます。This value is used only by Excel 2010.


有効な iFunction の値Valid iFunction values

有効なiFunctionの値は、 xlf. またはxlc. Xlcall.h ヘッダー ファイルまたは特殊な関数を次のいずれかで定義されている定数のいずれかです。Valid iFunction values are any of the xlf... or xlc... constants defined in the Xlcall.h header file or any of the following special functions.


関数のさまざまな種類Different Types of Functions

Excel4Excel12関数の 3 つのクラスを区別します。Excel4 and Excel12 distinguish among three classes of functions. 関数は、Excel が、DLL を呼び出す場合があります、3 つの状態によって分類されます。The functions are classified according to the three states in which Excel might call the DLL.

  • クラス 1 は、DLL が再計算の結果としてワークシートから呼び出された場合に適用されます。 Class 1 applies when the DLL is called from a worksheet as a result of recalculation.

  • クラス 2 は、DLL が関数マクロ内部から呼び出された場合、またはタイプ テキストで番号記号 (#) を付けて登録されたワークシートから呼び出された場合に適用されます。Class 2 applies when the DLL is called from within a function macro or from a worksheet where it was registered with a number sign (#) in the type text.

  • クラス 3 では、DLL がオブジェクト、マクロ、メニューのツールバー、ショートカット キー、 ExecuteExcel4Macroメソッド、またはツール/マクロ/実行] コマンドから呼び出されたときに適用されます。Class 3 applies when a DLL is called from an object, macro, menu, toolbar, shortcut key, ExecuteExcel4Macro method, or the Tools/Macro/Run command. 詳細については、 Excel のコマンド、関数、および状態を参照してください。For more information, see Excel Commands, Functions, and States.

次の表は、各クラスでどの関数が有効かを示しています。The following table shows what functions are valid in each class.

クラス 1Class 1 クラス 2Class 2 クラス 3Class 3
任意のワークシート関数Any worksheet function
XlSetを除く任意の xll ファイル専用のxl. 関数です。Any XLL-only xl... function except xlSet.
任意のワークシート関数Any worksheet function
XlSetを除くすべてのxl. 関数です。Any xl... function except xlSet.
マクロ シート機能、 xlfCallerを含む値を返しますが、ワークスペースに影響する操作、または開いているブックを実行しません。Macro sheet functions, including xlfCaller, that return a value but perform no action that affects the workspace or any open workbook.
XlSetと同じコマンド ・関数を含む関数、です。Any function, including xlSet and command-equivalent functions.

コマンドと等価の関数のダイアログ ボックスの表示Displaying the Dialog Box for a Command-Equivalent Function

コマンドに相当する関数に、関連付けられたダイアログ ボックスがある場合は、 iFunctionxlPromptビットを設定できます。If a command-equivalent function has an associated dialog box, you can set the xlPrompt bit in iFunction. つまり、あるコマンドを実行する前に適切なダイアログ ボックスが表示されます。This means that Excel displays the appropriate dialog box before carrying out the command.

International DLL の作成Writing International DLLs

IFunctionxlIntlビットを設定すると、関数やコマンドが実行、インターナショナル マクロ シートから呼び出されているされた場合と同様です。If you set the xlIntl bit in iFunction, the function or command is carried out as if it were being called from an International Macro Sheet. つまり、コマンドと動作を米国のバージョンの Excel では、国際 (ローカライズされた) バージョンで実行されている場合でも。This means that the command behaves as it would on the U.S. version of Excel, even if it is running on an international (localized) version.

xlretUncalced または xlretAbortxlretUncalced or xlretAbort

、これらの戻り値のいずれかを受信した後、DLL する必要がありますをクリーンアップし、すぐにコントロールを Excel に返します。After receiving one of these return values, your DLL must clean up and return control to Excel immediately. これらの戻り値のいずれかを受信した後は、 xlFreeを除いて、C API を使用して Excel にコールバックが無効になります。Callbacks into Excel via the C API, except xlFree, are disabled after receiving one of these return values.


次の例では、 Excel12関数を使用して、呼び出し元のセルを選択します。The following example uses the Excel12 function to select the cell from which it was called.

このコード例は、SDK がインストールされている次の場所に、Excel 2010 XLL SDK で提供されている大きな例の一部です。This code example is part of a larger example provided in the Excel 2010 XLL SDK, at the following location where you installed the SDK:



この関数は、コマンド マクロ (xlcSelect) を呼び出し、それゆえに、それが XLM マクロ シートから呼び出された場合にのみ動作します。This function calls a command macro (xlcSelect) and, therefore, works only if it is called from an XLM macro sheet.

short WINAPI Excel12Example(void)
    XLOPER12 xRes;
    Excel12(xlfCaller, &xRes, 0);
    Excel12(xlcSelect, 0, 1, (LPXLOPER12)&xRes);
    Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes);
    return 1;

関連項目See also