xlfEvaluate
適用対象: Excel 2013 | Office 2013 | Visual Studio
Microsoft Excel のパーサーと関数エバリュエーターを使用して、ワークシートのセルに入力できる任意の式を評価します。
Excel12(xlfEvaluate, LPXLOPER12 pxRes, 1, LPXLOPER12 pxFormulaText);
パラメーター
pxFormulaText (xltypeStr)
評価する文字列。 先頭の等号 (=) は省略可能です。 文字列には、ワークシートまたはマクロ シート セルに法的に入力できる任意のテキストを指定できます。
プロパティ値/戻り値
文字列の評価結果を返します。これは xltypeNum、xltypeStr、xltypeBool、xltypeErr、xltypeNil、xltypeMulti のいずれかになります。
注釈
文字列には関数のみを含めることができます。コマンドと同等の関数は含まれません。 これは、数式バーから F9 キーを押すのと同じです。 スレッド セーフとして登録されている XLL ワークシート関数から xlfEvaluate が呼び出される場合、式にはスレッド セーフ関数のみが含まれている必要があります。
xlfEvaluate 関数は、主に DLL が定義済みの名前に割り当てられた値を検索できるようにするために使用します。この名前はシート上にあるか、DLL 内で定義された非表示の名前です。 DLL/XLL 内では、ワークシートの名前に少なくとも感嘆符 (!) のプレフィックスを付けて、ワークシートが DLL の外部として解釈される必要があることに注意してください。 詳細については、「名前と他のワークシートの式を評価する」を参照してください。
xlfEvaluate は、開かれていない外部シートへの参照の評価には使用できません。
例
この例では、xlfEvaluate を使用して強制的にテキスト "!B38" をセル B38 の内容にします。
\SAMPLES\EXAMPLE\EXAMPLE.C
. この関数はコマンド マクロ (xlcAlert) を呼び出し、マクロ シートまたはマクロ コマンドから呼び出された場合にのみ正しく動作します。
short WINAPI EvaluateExample(void)
{
XLOPER12 xFormulaText, xRes, xRes2, xInt;
xFormulaText.xltype = xltypeStr;
xFormulaText.val.str = L"\004!B38";
Excel12(xlfEvaluate, &xRes, 1, (LPXLOPER12)&xFormulaText);
xInt.xltype = xltypeInt;
xInt.val.w = 2;
Excel12(xlcAlert, &xRes2, 2, (LPXLOPER12)&xRes, (LPXLOPER12)&xInt);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes);
Excel12(xlFree, 0, 1, (LPXLOPER12)&xRes2);
return 1;
}