Freigeben über


xlfUnregister (Formular 1)

Gilt für: Excel 2013 | Office 2013 | Visual Studio

Kann von einer DLL oder einem XLL-Befehl aufgerufen werden, der selbst von Microsoft Excel aufgerufen wurde. Dies entspricht dem Aufrufen von UNREGISTER aus einem Excel XLM-Makroblatt.

xlfUnregister kann in zwei Formen aufgerufen werden:

  • Formular 1: Hebt die Registrierung eines einzelnen Befehls oder einer Funktion auf.

  • Formular 2: Entlädt und deaktiviert eine XLL.

Diese Funktion wird in Form 1 aufgerufen und reduziert die Anzahl der Verwendungen einer DLL-Funktion oder eines Befehls, die zuvor mit xlfRegister oder REGISTER registriert wurde. Wenn die Nutzungsanzahl bereits 0 (null) ist, hat diese Funktion keine Auswirkung. Wenn die Nutzungsanzahl aller Funktionen in einer DLL 0 (null) erreicht, wird die DLL aus dem Arbeitsspeicher entladen.

xlfRegister (Formular 1) definiert auch einen ausgeblendeten Namen, der das Funktionstextargument pxFunctionText ist und zur Registrierungs-ID der Funktion oder des Befehls ausgewertet wird. Beim Aufheben der Registrierung der Funktion sollte dieser Name mithilfe von xlfSetName gelöscht werden, damit der Funktionsname nicht mehr vom Funktions-Assistenten aufgeführt wird. Weitere Informationen finden Sie unter Bekannte Probleme bei der Excel-XLL-Entwicklung.

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

Parameter

pxRegisterId (xltypeNum)

Die Registrierungs-ID der Funktion, die die Registrierung aufheben soll.

Eigenschaftswert/Rückgabewert

Bei erfolgreicher Ausführung wird TRUE (xltypeBool) zurückgegeben, andernfalls WIRD FALSE zurückgegeben.

Hinweise

Die Registrierungs-ID der Funktion wird von xlfRegister zurückgegeben, wenn die Funktion zum ersten Mal registriert wird. Sie kann auch durch Aufrufen der xlfRegisterId-Funktion oder der xlfEvaluate-Funktion abgerufen werden. Beachten Sie, dass xlfRegisterId versucht, die Funktion zu registrieren, wenn sie noch nicht registriert wurde. Wenn Sie nur versuchen, die ID abzurufen, damit Sie die Registrierung der Funktion aufheben können, ist es daher besser, sie abzurufen, indem Sie den registrierten Namen an xlfEvaluate übergeben. Wenn die Funktion nicht registriert wurde, schlägt xlfEvaluate mit einem #NAME fehl? Fehler.

Beispiel

Weitere Informationen finden Sie im Code für die fExit-Funktion 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();
}

Siehe auch