Partager via


xlfUnregister (formulaire 1)

S’applique à: Excel 2013 | Office 2013 | Visual Studio

Peut être appelé à partir d’une commande DLL ou XLL qui a elle-même été appelée par Microsoft Excel. Cela revient à appeler UNREGISTER à partir d’une feuille macro Excel XLM.

xlfUnregister peut être appelé sous deux formes :

  • Formulaire 1 : annule l’inscription d’une commande ou d’une fonction individuelle.

  • Formulaire 2 : décharge et désactive un XLL.

Appelée dans le formulaire 1, cette fonction réduit le nombre d’utilisations d’une fonction ou d’une commande DLL précédemment inscrite à l’aide de xlfRegister ou REGISTER. Si le nombre d’utilisations est déjà égal à zéro, cette fonction n’a aucun effet. Lorsque le nombre d’utilisations de toutes les fonctions d’une DLL atteint zéro, la DLL est déchargée de la mémoire.

xlfRegister (Formulaire 1) définit également un nom masqué qui est l’argument texte de la fonction, pxFunctionText, et qui prend la valeur de l’ID d’inscription de la fonction ou de la commande. Lors de la désinscription de la fonction, ce nom doit être supprimé à l’aide de xlfSetName afin que le nom de la fonction ne soit plus répertorié par l’Assistant Fonction. Pour plus d’informations, reportez-vous à la rubrique Problèmes connus concernant le développement de XLL Excel.

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

Paramètres

pxRegisterId (xltypeNum)

ID d’inscription de la fonction à annuler.

Valeur de propriété/valeur de renvoi

Si elle réussit, retourne TRUE (xltypeBool), sinon elle retourne FALSE.

Remarques

L’ID d’inscription de la fonction est retourné par xlfRegister lors de la première inscription de la fonction. Il peut également être obtenu en appelant la fonction xlfRegisterId ou la fonction xlfEvaluate. Notez que xlfRegisterId tente d’inscrire la fonction si elle n’a pas déjà été inscrite. Pour cette raison, si vous essayez uniquement d’obtenir l’ID afin de pouvoir annuler l’inscription de la fonction, il est préférable de l’obtenir en passant le nom inscrit à xlfEvaluate. Si la fonction n’a pas été inscrite, xlfEvaluate échoue avec un #NAME ? Erreur.

Exemple

Consultez le code de la fonction fExit dans \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();
}

Voir aussi