xlGetInst
適用対象: Excel 2013 | Office 2013 | Visual Studio
現在 DLL を呼び出している Microsoft Excel インスタンスのインスタンス ハンドルを返します。
Excel4(xlGetInst, LPXLOPER pxRes, 0); /* returns low part only */
Excel12(xlGetInst, LPXLOPER12 pxRes, 0); /* returns full handle */
パラメーター
この関数には引数はありません。
プロパティ値/戻り値
インスタンス ハンドル (xltypeInt) は、val.w フィールドに取り込まれます。
注釈
この関数を使用すると、DLL を呼び出している Excel の複数の実行中インスタンスを特定できます。
Excel4 または Excel4v を使用してこの関数を呼び出す場合、返される XLOPER 整数変数は符号付き 16 ビットの short int です。これは、32 ビット Windows ハンドルの下位 16 ビットのみを格納できます。 Excel 2007 以降、 XLOPER12 の整数変数は符号付き 32 ビット int であるため、ハンドル全体が含まれているため、開いているすべてのウィンドウを反復処理する必要がなくなり、
重要
xlGetInst 関数が 64 ビット バージョンの Microsoft Excel で使用されている場合、関数は失敗します。 これは、 xltypeInt 値型が、この場合 Excel から返される 64 ビットの長いハンドルを保持するのに十分な幅がないためです。 このため、Excel 2010 では xlGetInstPtr という名前の新しい関数が導入されました。これは、32 ビットバージョンと 64 ビット バージョンの Excel の両方で正しく実行されます。
例
次の例では、それを呼び出した Excel の最後のコピーのインスタンスを、それを呼び出した Excel の現在のコピーと比較します。 同じ場合は 1 を返します。そうでない場合は、0 を返します。関数が失敗すると、-1 が返されます。
\SAMPLES\EXAMPLE\EXAMPLE.C
short WINAPI xlGetInstExample(void)
{
XLOPER12 xRes;
static HANDLE hOld = 0;
short iRet;
if (Excel12(xlGetInst, &xRes, 0) != xlretSuccess)
iRet = -1;
else
{
HANDLE hNew;
hNew = (HANDLE)xRes.val.w;
if (hNew != hOld)
iRet = 0;
else
iRet = 1;
hOld = hNew;
}
return iRet;
}