xlfUnregister (形式 1)xlfUnregister (Form 1)

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

Microsoft Excel から呼び出された DLL コマンドまたは XLL コマンドから呼び出すことができます。これは、UNREGISTER を Excel XLM マクロ シートから呼び出すのと同等です。Can be called from a DLL or XLL command that has itself been called by Microsoft Excel. This is equivalent to calling UNREGISTER from an Excel XLM macro sheet.

xlfUnregister 関数は、次の 2 つの形式で呼び出すことができます。xlfUnregister can be called in two forms:

  • 形式 1: 個々のコマンドや関数の登録を解除します。Form 1: Unregisters an individual command or function.

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

形式 1 で呼び出されると、この関数は、xlfRegister または REGISTER を使用して既に登録されている DLL 関数またはコマンドの使用カウントを減らします。既に使用カウントが 0 の場合、この関数の効果はありません。DLL 内のすべての関数の使用カウントが 0 になると、DLL はメモリからアンロードされます。Called in Form 1, this function reduces the use count of a DLL function or command that was previously registered using xlfRegister or REGISTER. If the usage count is already zero, this function has no effect. When the use count of all the functions in a DLL reaches zero, the DLL is unloaded from memory.

xlfRegister (形式 1) は、関数またはコマンドの登録 ID ともみなされる非表示名 (関数のテキスト引数 pxFunctionText) も定義します。関数の登録を解除する場合は、関数ウィザードにその関数の名前が表示されなくなるように、xlfSetName を使用してこの名前を削除する必要があります。詳しくは、「Excel アドイン (XLL) 開発における既知の問題」を参照してください。xlfRegister (Form 1) also defines a hidden name which is the function text argument, pxFunctionText, and which evaluates to the function or command's registration ID. When unregistering the function, this name should be deleted using xlfSetName so that the function name is no longer listed by the Function Wizard. For more information, see Known Issues in Excel XLL Development.

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

パラメーターParameters

pxRegisterId (xltypeNum)pxRegisterId (xltypeNum)

登録を解除する関数の登録 ID。The registration ID of the function to be unregistered.

プロパティ値/戻り値Property Value/Return Value

成功した場合は TRUE (xltypeBool) を返します。それ以外の場合は FALSE を返します。If successful, returns TRUE (xltypeBool), otherwise it returns FALSE.

注釈Remarks

関数の登録 ID は、関数の最初の登録時に xlfRegister によって返されます。また、xlfRegisterId 関数 または xlfEvaluate 関数を呼び出して取得することもできます。関数がまだ登録されていない場合は、xlfRegisterId はその関数を登録しようとすることにご注意ください。このため、単に関数の登録を解除する目的で ID を取得しようとしているのであれば、登録された名前を xlfEvaluate に渡して ID を取得することをお勧めします。関数が登録されていない場合、xlfEvaluate は #NAME? エラーで失敗します。The registration ID of the function is returned by xlfRegister when the function is first registered. It can also be obtained by calling the xlfRegisterId function or the xlfEvaluate function. Note that xlfRegisterId tries to register the function if it has not already been registered. For this reason, if you are only trying to get the ID so that you can unregister the function, it is better to obtain it by passing the registered name to xlfEvaluate. If the function has not been registered, xlfEvaluate fails with a #NAME? error.

Example

\SAMPLES\GENERIC\GENERIC.CfExit 関数のコードを参照してください。See the code for the fExit function in \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();
}

関連項目See also