Partager via


xlAutoClose (traduction automatique)

Dernière modification : mercredi 18 mars 2009

S’applique à : Excel 2010 | Office 2010 | VBA | Visual Studio

Important

Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Appelée par Microsoft Excel quand la XLL est désactivée. Le complément est désactivé lorsqu’une session Excel se termine normalement. L’utilisateur peut désactiver le complément durant une session Excel, auquel cas cette fonction est appelée.

Excel ne nécessite pas un XLL implémentez et exportez cette fonction, même s'il est conseillé pour que votre XLL peut annuler l'inscription des fonctions et commandes, libérer des ressources, annuler des personnalisations et ainsi de suite. Si les fonctions et les commandes ne sont pas explicitement Registre par la XLL, Excel effectue cette opération après l'appel de la fonction xlAutoClose.

int WINAPI xlAutoClose(void);

Paramètres

Cette fonction ne prend aucun argument.

Valeur de propriété/Valeur renvoyée

Votre implémentation de cette fonction doit retourner 1 (int).

Notes

Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Remarques

Excel appelle la fonction xlAutoClose chaque fois que la XLL est désactivée, c'est-à-dire déchargé de la mémoire. La XLL est désactivée dans les situations suivantes :

  • À la fin normale d'une session Excel s'il est actif au cours de cette session.

  • Si explicitement déchargé lors d'une session Excel.

  • Un XLL peut être déchargé de plusieurs manières :

  • À l'aide du Gestionnaire de compléments.

  • À partir d'un autre XLL qui appelle xlfUnregister avec le nom de cette DLL comme le seul argument.

  • À partir d'une feuille de macro XLM qui appelle UNREGISTER avec le nom de cette DLL comme le seul argument.

Cette fonction doit effectuer les opérations suivantes :

  • Supprimez tous les menus ou les éléments de menu qui ont été ajoutés par la XLL.

  • Effectuer tout nettoyage nécessaire global.

  • Supprimer tous les noms qui ont été créés, en particulier les noms des fonctions exportées. N'oubliez pas qu'enregistrement de fonctions peut entraîner certains noms doit être créée, si le quatrième argument de REGISTER est présent.

Exemple

Consultez les fichiers SAMPLES\EXAMPLE\EXAMPLE.C et SAMPLES\GENERIC\GENERIC.C pour des exemples d'implémentation de cette fonction. Le code suivant provient de SAMPLES\GENERIC\GENERIC.C.

int WINAPI xlAutoClose(void)
{
   int i;
   XLOPER12 xRes;

//
// This block first deletes all names added by xlAutoOpen or
// xlAutoRegister12. Next, it checks if the drop-down menu Generic still
// exists. If it does, it is deleted using xlfDeleteMenu. It then checks
// if the Test toolbar still exists. If it is, xlfDeleteToolbar is
// used to delete it.
//
// The following code to delete the defined names
// does not work in the current version of Excel. 
// You cannot delete these names once they are Registered.
// The code is left here in case the functionality becomes 
// available in a future version.
//

   for (i = 0; i < g_rgWorksheetFuncsRows; i++)
      Excel12f(xlfSetName, 0, 1, TempStr12(g_rgWorksheetFuncs[i][2]));

   for (i = 0; i < g_rgCommandFuncsRows; i++)
      Excel12f(xlfSetName, 0, 1, TempStr12(g_rgCommandFuncs[i][2]));
//
// Everything else works as documented.
//
   Excel12f(xlfGetBar, &xRes, 3, TempInt12(10), TempStr12(L"Generic"), TempInt12(0));

   if (xRes.xltype != xltypeErr)
   {
      Excel12f(xlfDeleteMenu, 0, 2, TempNum12(10), TempStr12(L"Generic"));

      // Free the XLOPER12 returned by xlfGetBar //
      Excel12f(xlFree, 0, 1, (LPXLOPER12) &xRes);
   }

   Excel12f(xlfGetToolbar, &xRes, 2, TempInt12(7), TempStr12(L"Test"));

   if (xRes.xltype != xltypeErr)
   {
      Excel12f(xlfDeleteToolbar, 0, 1, TempStr12(L"Test"));

      // Free the XLOPER12 returned by xlfGetToolbar //
      Excel12f(xlFree, 0, 1, (LPXLOPER12) &xRes);
   }

   return 1;
}

Voir aussi

Référence

xlAutoOpen (traduction automatique)

Concepts

Gestionnaire de compléments et fonctions d’interface XLL (traduction automatique)