xlfUnregister (形式 1)

適用対象: Excel 2013 | Office 2013 | Visual Studio

Microsoft Excel から直接呼び出すように、 DLL コマンドや XLL コマンドを使って呼び出すことができます。 これは、UNREGISTER を Excel XLM マクロ シートから呼び出すのと同等です。

xlfUnregister 関数は、次の 2 つの形式で呼び出すことができます。

  • 形式 1: 個々のコマンドや関数の登録を解除します。

  • 形式 2: XLL のアンロードと非アクティブ化を行います。

フォーム 1 で呼び出されたこの関数は、 xlfRegister または REGISTER を使用して以前に登録された DLL 関数またはコマンドの使用数を減らします。 使用量の数が既に 0 の場合、この関数は効果がありません。 DLL 内のすべての関数の使用カウントが 0 に達すると、DLL はメモリからアンロードされます。

xlfRegister (形式 1) は、関数またはコマンドの登録 ID ともみなされる非表示名 (関数のテキスト引数 pxFunctionText ) も定義します。 関数の登録を解除する場合は、関数ウィザードにその関数の名前が表示されなくなるように、xlfSetName を使用してこの名前を削除する必要があります。 詳しくは、「Excel XLL 開発での既知の問題」をご覧ください。

Excel4(xlfUnregister, LPXLOPER pxRes, 1, LPXLOPER pxRegisterId);

パラメーター

pxRegisterId (xltypeNum)

登録を解除する関数の登録 ID。

プロパティ値/戻り値

成功した場合は TRUE (xltypeBool) を返します。それ以外の場合は FALSE を返します。

注釈

関数の登録 ID は、関数の最初の登録時に xlfRegister によって返されます。 また、xlfRegisterId 関数 または xlfEvaluate 関数を呼び出して取得することもできます。 関数がまだ登録されていない場合は、xlfRegisterId はその関数を登録しようとすることにご注意ください。 このため、単に関数の登録を解除する目的で ID を取得しようとしているのであれば、登録された名前を xlfEvaluate に渡して ID を取得することをお勧めします。 関数が登録されていない場合、 xlfEvaluate は #NAME で失敗しますか?エラー。

の fExit 関数のコードを\SAMPLES\GENERIC\GENERIC.C参照してください。

int WINAPI fExit(void)
{
   XLOPER12  xDLL,    // The name of this DLL //
   xFunc,             // The name of the function //
   xRegId;            // The registration ID //
   int i;
//
// This code gets the DLL name. It then uses this along with information
// from g_rgFuncs[] to obtain a REGISTER.ID() for each function. The
// register ID is then used to unregister each function. Then the code
// frees the DLL name and calls xlAutoClose.
//
   // Make xFunc a string //
   xFunc.xltype = xltypeStr;
   Excel12f(xlGetName, &xDLL, 0);
   for (i = 0; i < g_rgWorksheetFuncsRows; i++)
   {
      xFunc.val.str = (LPWSTR) (g_rgWorksheetFuncs[i][0]);
      Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
      Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
   }
   for (i = 0; i < g_rgCommandFuncsRows; i++)
   {
      xFunc.val.str = (LPWSTR) (g_rgCommandFuncs[i][0]);
      Excel12f(xlfRegisterId,&xRegId,2,(LPXLOPER12)&xDLL,(LPXLOPER12)&xFunc);
      Excel12f(xlfUnregister, 0, 1, (LPXLOPER12) &xRegId);
   }
   Excel12f(xlFree, 0, 1,  (LPXLOPER12) &xDLL);
   return xlAutoClose();
}

関連項目