Partager via


Création de XLL (traduction automatique)

Dernière modification : mardi 24 novembre 2009

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

Dans cet article
L'activation de la DLL d'appel dans Excel
Transformer les DLL en XLL : le complément fonctions de gestionnaire de l'Interface

Important

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

Si votre DLL est autonome ou ne se base que sur d’autres bibliothèques, vous devez savoir comment autoriser Microsoft Excel à accéder à ses fonctions et commandes. Pour plus d’informations, voir Procédure : accéder aux DLL dans Excel (traduction automatique).

Toutefois, si votre DLL doit accéder aux fonctionnalités d'Excel (par exemple, pour obtenir le contenu d'une cellule, pour appeler une fonction de feuille de calcul ou interroger Excel pour obtenir des informations d'espace de travail), votre code doit être en mesure d'effectuer un rappel dans Excel.

L'API C Excel propose plusieurs fonctions qui permettent des DLL effectuer un rappel dans Excel. Pour accéder à celles-ci, la DLL doit être liée statiquement à la compilation avec la bibliothèque Excel 32 bits, xlcall32.lib. La bibliothèque statique peut être téléchargée à partir de Microsoft en tant que partie du SDK XLL Microsoft Excel 2010, qui inclut les versions 32 bits et 64 bits de cette bibliothèque.

L'activation de la DLL d'appel dans Excel

Pour une DLL être en mesure d'accéder aux fonctionnalités dans Excel et obtenir ou définir informations d'espace de travail, il doit d'abord obtenir les adresses des Excel4 de fonctions de rappel de Excel, Excel4v, Excel12 et Excel12v. Les deux dernières ont été introduites dans Excel 2007 et sont disponibles dans les versions ultérieures. Pour accéder à tous ces éléments, le projet de DLL doit inclure des références aux fichiers suivants dans le Kit de développement de XLL Excel 2010. Si vous souhaitez accéder uniquement les deux premiers rappels (dans n'importe quelle version de Microsoft Excel), votre projet doit inclure uniquement les deux premiers fichiers.

Xlcall.h

Le fichier Xlcall.h contient les éléments suivants :

  • Prototypes de fonction pour toutes les fonctions de rappel.

  • Définitions des structures de données qui utilisent les rappels pour échanger des données entre les DLL/XLL et Excel et les définitions de constantes de type de données.

  • Définitions des équivalents API C fonction et commande de la feuille de calcul, des fonctions de feuille macro et commandes Excel prises en charge.

  • Valeurs de retour de définitions de fonction de rappel.

Vous devez utiliser la directive #include pour ce fichier, directement ou indirectement par l'intermédiaire d'un autre fichier d'en-tête, dans tous les fichiers qui accéder à l'API c ou pour gérer les types de données qui utilise l'API C.

Xlcall32.lib

La bibliothèque de Xlcall32.lib exporte les rappels tout d'abord deux, Excel4 et Excel4v et également la fonction XlCallVer. Sans une référence à cette bibliothèque dans votre projet, l'éditeur de liens ne peut pas créer la XLL si vous avez utilisé une de ces rappels dans votre code. (Vous pouvez obtenir les adresses de ces fonctions en liaison dynamique à la Xlcall32.dll équivalente est copié dans votre système dans le cadre d'une installation normale de Excel.)

Xlcall.cpp

Les Excel rappels Excel12 et Excel12v ne sont pas exportés dans Xlcall32.lib. Cela garantit que les projets XLL que vous créez à partir de Excel 2007 fonctionne également avec les versions antérieures d'Excel. Le module Xlcall.cpp contient le code pour les fonctions Excel12 et Excel12v, qui appellent un point d'entrée Excel à partir Excel 2007 ou retourner une valeur d'erreur de sécurité si vous exécutez une version antérieure d'Excel. Si vous souhaitez créer un XLL qui s'exécute à partir de Excel 2007 et qui est en mesure d'utiliser les nouveaux types de données qui gèrent des grilles plus grandes et plus longues chaînes Unicode, vous devez inclure ce module dans votre projet.

Notes

En commençant par le Kit de développement logiciel Excel 2010, ce fichier peut être compilé pour les XLL 32 bits et 64 bits.

Transformer les DLL en XLL : le complément fonctions de gestionnaire de l'Interface

Un XLL est une DLL qui exporte plusieurs procédures qui sont appelées par Excel ou le Gestionnaire de compléments Excel. Ces procédures sont brièvement décrites ici et expliquées en détail dans Gestionnaire de compléments et fonctions d’interface XLL (traduction automatique). Tous ces rappels DLL commencent par le préfixe xlAuto. Uniquement une d'entre elles, la commande xlAutoOpen, est requis. Elle est appelée lorsque le complément est activé, et il est généralement utilisé pour enregistrer les fonctions XLL et commandes avec Excel et à effectuer d'autres tâches d'initialisation. Les exemples d'implémentation de toutes les fonctions xlAuto et les signatures de fonction sont fournis dans les sections suivantes.

Même si xlAutoOpen est le seul requis de ces rappels, votre complément deviez également exporter d'autres personnes en fonction de son comportement.

Excel 2007 a introduit un nouveau type de données, XLOPER12, pour tenir compte des grilles plus grandes et pour prendre en charge de longues chaînes Unicode. XLOPER12 est décrite plus loin dans cette rubrique. Considérant que les fonctions xlAuto prennent ou renvoient l'ancien XLOPER de type de données, les nouvelles versions de ces fonctions ont été introduites dans Excel 2007 qui utilisent des types de données XLOPER12. À l'exception de xlAutoFree12, qui vous devez parfois implémenter pour éviter les XLOPER12 mémoire fuites, vous pouvez omettre en toute sécurité toutes les version 12 xlAuto fonctions, auquel cas, Excel à partir de Excel 2007, appelle les versions XLOPER.

xlAutoOpen

Excel appelle la fonction xlAutoOpen chaque fois que la XLL est activée. Le complément sera activé au début d'une session Excel si elle était active lors de la dernière session d'Excel qui s'est terminée normalement. La macro complémentaire est activée s'il est chargé lors d'une session Excel. Le complément peut être désactivé et réactivé lors d'une session d'Excel, et la fonction est appelée sur une réactivation.

Vous devez utiliser xlAutoOpen pour inscrire des commandes et fonctions XLL, initialiser les structures de données, personnaliser l'interface utilisateur et ainsi de suite.

Si votre complément implémente et exporte la fonction xlAutoRegister ou xlAutoRegister12, Excel peut tenter d'activer et inscrire une fonction ou une commande sans appeler auparavant la fonction xlAutoOpen. Dans ce cas, vous devez vous assurer que votre macro complémentaire est suffisamment initialisé pour votre fonction ou la commande fonctionne correctement. S'il n'est pas le cas, vous devez soit échouer la tentative d'inscrire la fonction ou une commande ou d'effectuer l'initialisation nécessaire.

xlAutoClose

Excel appelle la fonction xlAutoClose chaque fois que la XLL est désactivée. Le complément sera désactivé quand une session Excel se termine normalement. Si l'utilisateur désactive le complément lors d'une session d'Excel, la fonction est appelée.

Vous devez utiliser xlAutoClose pour annuler l'inscription des fonctions et commandes, libérer des ressources, annuler des personnalisations et ainsi de suite.

Notes

Il existe un problème connu avec l'annulation d'inscription des fonctions et des commandes. Pour plus d'informations, consultez Problèmes de développement XLL Excel connus (traduction automatique).

xlAutoAdd

Excel qualifie le xlAutoAdd function chaque fois que l'utilisateur Active la XLL lors d'une session Excel en utilisant le Gestionnaire de compléments. Cette fonction n'est pas appelée lorsque Excel démarre et charge une macro complémentaire préinstallée.

Vous pouvez utiliser cette fonction pour afficher une boîte de dialogue personnalisée qui indique à l'utilisateur que le complément a été activé, pour lire ou écrire dans le Registre ou pour vérifier les informations relatives aux licences.

xlAutoRemove

Excel appelle la fonction xlAutoRemove chaque fois que l'utilisateur désactive la XLL lors d'une session Excel en utilisant le Gestionnaire de compléments. Cette fonction n'est pas appelée lorsqu'une session Excel ferme, normale ou anormale, avec le complément installé.

Vous pouvez utiliser cette fonction pour afficher une boîte de dialogue personnalisée qui indique à l'utilisateur que le complément a été désactivé, ou pour lire ou écrire dans le Registre.

xlAddInManagerInfo/xlAddInManagerInfo12

Excel appelle la fonction xlAddInManagerInfo lorsque le Gestionnaire de compléments est appelé pour la première fois dans une session Excel. Si Excel passe un argument est égal à 1, cette fonction doit retourner une chaîne (en règle générale, le nom de la macro complémentaire) ; dans le cas contraire, elle doit retourner #VALUE!.

À partir de Excel 2007, Excel appelle la fonction xlAddInManagerInfo12 de préférence à la fonction xlAddInManagerInfo s'il est exporté par la XLL. La fonction xlAddInManagerInfo12 doit fonctionner de la même manière que la fonction xlAddInManagerInfo pour éviter les différences spécifiques à la version de comportement de la XLL. La fonction xlAddInManagerInfo12 doit retourner un type de données XLOPER12, considérant que la fonction xlAddInManagerInfo doit retourner un type de données XLOPER.

xlAutoRegister/xlAutoRegister12

Excel appelle la fonction xlAutoRegister chaque fois qu'un appel a été trouvée pour le REGISTER de fonction XLM, ou la fonction xlfRegister équivalent API C, avec les types de retour et argument manquant pour la fonction en cours d'inscription. La fonction xlAutoRegister permet la XLL rechercher ses listes internes des fonctions exportées et des commandes pour enregistrer la fonction avec l'argument et de retourner les types spécifiés.

À partir de Excel 2007, Excel appelle la fonction xlAddInRegister12 de préférence à la fonction xlAddInRegister s'il est exporté par la XLL.

Notes

Si xlAddInRegister/xlAddInRegister12 essaie d'enregistrer la fonction sans avoir à fournir l'argument et retournent des types, une boucle d'appel récursive se produit et finalement les dépassements de capacité de la pile des appels et obliger Excel fermer ou cesser de répondre.

xlAutoFree/xlAutoFree12

Excel appelle la fonction xlAutoFree/xlAutoFree12 juste après qu'une fonction de feuille de calcul XLL renvoie un type de données de XLOPER/XLOPER12 avec un indicateur qui indique à Excel que la XLL doit toujours libérer la mémoire est. Ainsi, le XLL renvoyer attribuées de manière dynamique les tableaux, les chaînes et les références externes à la feuille de calcul sans fuites de mémoire. Le type de données XLOPER12 à partir de Excel 2007, est pris en charge. Pour plus d'informations, consultez Gestion de la mémoire dans Excel (traduction automatique).

Notes

Démarrage en Excel 2007, lorsque Excel est configuré pour utiliser le nouveau calcul de la feuille de calcul multithread, la fonction de xlAutoFree/xlAutoFree12 est appelée sur le même thread que celui qui a été utilisé seulement pour appeler la fonction qui l'a renvoyée. L'appel à xlAutoFree/xlAutoFree12 est toujours effectué avant que les cellules de feuille de calcul suivantes sont évaluées sur ce thread. Cela simplifie la conception du thread-safe dans votre XLL. Pour plus d'informations, consultez Recalcul multithread dans Excel (traduction automatique).

Création de XLL 64 bits

Excel et fonctions définies par l'utilisateur peuvent exécuter sur les systèmes d'exploitation 64 bits pour tirer parti des avantages de performances sur les systèmes d'exploitation 32 bits. Excel transmet les valeurs dans des structures XLOPER12 contenant des informations sur les types de données. Soyez prudent lors de la conversion entre les valeurs de la structure XLOPER12 et les types natifs tels que int ou des pointeurs pour conserver les valeurs dans le type supérieur.

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.

Voir aussi

Concepts

Procédure : appeler des fonctions XLL à partir de l’Assistant Fonction ou des boîtes de dialogue Remplacer (traduction automatique)

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

Développement de XLL Excel 2010 (traduction automatique)