xlGetInstPtr
適用対象: Excel 2013 | Office 2013 | Visual Studio
現在 DLL を呼び出している Microsoft Excel インスタンスのインスタンス ハンドルを返します。
Excel4(xlGetInstPtr, LPXLOPER pxRes, 0);Excel12(xlGetInstPtr, LPXLOPER12 pxRes, 0);
パラメーター
この関数には引数はありません。
プロパティ値/戻り値
インスタンス ハンドル (xltypeBigData) は val.bigdata.h.hdata フィールドに格納されます。
注釈
この関数を使用すると、DLL を呼び出している Excel の複数の実行中インスタンスを特定できます。
この関数は、32 ビットと 64 ビットの両方のバージョンの Excel で適切な値を返します。 xlGetInst 関数の拡張機能として Excel 2010 で導入され、32 ビット バージョンの Excel でのみ正常に動作します。
この関数は、API のコールバック関数の Excel4 と Excel12 の両方を使用して呼び出されたときに正常に作動します。これは XLOPER と XLOPER12 が xltypeBigData の型の値をサポートする同じ構造を持つからです。
例
次の例では、それを呼び出した Excel の最後のコピーのインスタンスを、それを呼び出した Excel の現在のコピーと比較します。 同じ場合は 1 を返します。そうでない場合は、0 を返します。関数が失敗すると、-1 が返されます。 このサンプルは、32 ビットバージョンと 64 ビット バージョンの Excel の両方で動作します。
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlGetInstPtrExample(void)
{
XLOPER12 xRes;
static HANDLE hOld = 0;
short iRet;
if (Excel12(xlGetInstPtr, &xRes, 0) != xlretSuccess)
iRet = -1;
else
{
HANDLE hNew;
hNew = xRes.val.bigdata.h.hdata;
if (hNew != hOld)
iRet = 0;
else
iRet = 1;
hOld = hNew;
}
return iRet;
}