次の方法で共有


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 の両方を使用して呼び出されたときに正常に作動します。これは XLOPERXLOPER12xltypeBigData の型の値をサポートする同じ構造を持つからです。

次の例では、それを呼び出した 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;
}

関連項目