Complément d'automatisation Excel User-Defined-Functions (UDF) 1 avec programme d'installation intégré, tous deux écrits en VB.Net
Solution complète Microsoft Visual Studio 2022 et code source du projet.
Installateurs pour Office/Excel 32 bits et 64 bits inclus.
Cliquez sur Releases > Assets pour des exemples prédéfinis.
Les fonctions définies par l'utilisateur (UDF) Excel telles que développées dans VB.Net existent depuis de nombreuses années, dont les premiers exemples incluent :
http://www.cpearson.com/Excel/CreatingNETFunctionLib.aspx
https://www.codeproject.com/Articles/7753/Create-an-Automation-Add-In-for-Excel-using-NET
Bien que ces fonctions fonctionnent bien, leur déploiement peut être plus problématique, en particulier lorsque les utilisateurs finaux ne sont pas familiers ou ne sont pas autorisés à exécuter des utilitaires de ligne de commande tels que Regasm pour terminer l'installation.
Les objectifs de conception de ce projet sont donc : -
Un PC Windows avec le logiciel suivant installé est requis pour créer la solution
Une « nouvelle version » de tous les composants ci-dessus est recommandée, sur un PC de développement dédié si possible, et avec toutes les mises à jour appliquées.
Visual Studio doit avoir les éléments suivants installés
L'utilitaire suivant est utile pour inspecter le processus d'enregistrement, mais n'est pas obligatoire.
Le complément d'automatisation est enregistré pendant le processus d'installation.
Différentes valeurs doivent être écrites dans le registre pour les versions 32 bits et 64 bits d'Office.
La classe du programme d'installation fournit ces valeurs. Les propriétés des actions personnalisées sont définies pour la version requise dans chaque projet d'installation.
Des projets d'installation Office 32 bits et 64 bits distincts sont fournis et doivent être créés pour chaque version requise.
Visual Studio génère deux fichiers de sortie, setup.exe
et AUTO_INSTALLER_nn.msi
à partir de chaque projet d'installation
L'un ou l'autre de ces fichiers peut être distribué et exécuté par les utilisateurs finaux, pour être installé et désinstallé selon les besoins.
Après avoir exécuté le programme d'installation, les utilisateurs doivent configurer Excel pour activer le complément d'automatisation.
Depuis Excel > Fichier > Options > Compléments > Gérer les compléments Excel
Cliquez sur Automatisation, faites défiler vers le bas et sélectionnez AUTOMATION.Fonctions
Cliquez sur OK pour confirmer
Deux exemples de formules Excel sont fournis
=IFX()
dans une cellule de feuille de calcul renvoie la chaîne de texte AUTO FX OK
=TIMENOW()
dans une cellule de feuille de calcul renvoie l'heure actuelle en millisecondes, par exemple 12:34:56.789
Il s'agit d'une fonction « volatile » qui sera recalculée lorsque la touche F9 est enfoncée ou qu'une autre cellule change.
Les fonctions proposées par le complément peuvent être répertoriées en cliquant sur Formules > Insérer une fonction et en sélectionnant AUTOMATION.Functions comme catégorie
Les utilisateurs peuvent désinstaller le complément en cliquant avec le bouton droit sur le bouton Démarrer de Windows et en sélectionnant Applications et fonctionnalités.
Faites défiler jusqu'à Automation FX et sélectionnez Désinstaller
Le module de classe Installer.vb
effectue l'enregistrement de l'assembly et les mises à jour du registre requises lorsque le développeur ou l'utilisateur final exécute le programme d'installation .exe ou .msi.
La balise <System.ComponentModel.RunInstaller(True)>
est fournie automatiquement par vb.net dans le fichier Installer.Designer.vb
lorsqu'un nouveau module de classe Installer est ajouté à un projet.
Cette balise est utilisée par le programme d'installation pour appeler Public Overrides Sub Install(stateSaver As IDictionary)
via les propriétés d'action personnalisées dans les projets AUTO_INSTALLER_32 et AUTO_INSTALLER_64.
La sous- Install
appelle ensuite RegisterAssembly
, ce qui est fonctionnellement équivalent à l'exécution manuelle RegAsm.exe
.
RegAsm.exe
lui-même utilise des méthodes exposées par RegistrationServices 3
Les points suivants doivent toujours être respectés pour éviter d'effectuer des mises à jour contradictoires du registre pendant le développement et les tests.
Dans le projet AUTO_FUNCTIONS > Propriétés, les options ci-dessous ne doivent à aucun moment être sélectionnées.
Register for COM Interop
dans la section Compiler Make assembly COM-Visible
dans la section Application > Informations sur l'assembly Les balises <ComRegisterFunction>
et <ComUnRegisterFunction>
ne doivent également être utilisées dans aucun module.
Dans chaque projet > Propriétés de sortie principales, Register doit être défini sur vsdrpDoNotRegister.
Une nouvelle version de production doit être développée pour garantir que tous les GUID sont uniques et que toutes les mises à jour, références et dépendances de Visual Studio sont incorporées.
https://support.microsoft.com/en-us/topic/excel-com-add-ins-and-automation-add-ins-91f5ff06-0c9c-b98e-06e9-3657964eec72 ↩
https://learn.microsoft.com/en-us/dotnet/framework/interop/registering-assemblies-with-com ↩
https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.registrationservices?view=netframework-4.8.1 ↩