mercredi 13 février 2008

Appel d'une assembly .net depuis une application VBA

tout est dans le titre, comment donc faire appel à une assembly .net depuis une application VBA (au hasard Excel) :
  1. Créer une ClassLibrary
  2. Dans le propriétés du projet > Application > Information de l’assembly > cocher "Rendre l’assembly visible par COM"
  3. Puis dans Générer > cocher "Inscription pour Com Interop"
  4. Signer le projet avec un fichier SNK
  5. Dans la classe elle même, créer les membres et les fonctions en public
  6. Créer un fichier Excel.exe.config contenant le code ciblant le framework à utiliser :
    <?xml version="1.0"?>
    <configuration>
    <startup>
    <supportedRuntime version="v2.0.50727"/>
    </startup>
    </configuration>
  7. Mettre ce fichier au niveau de l'exécutable Excel.exe
  8. Ensuite au niveau de l'application Excel, ouvrir le Visual Basic Editor > Outils > Références > cocher votre composant dans la liste
  9. Créer votre code VBA pour faire appel à votre assembly :
    Sub CallAssemblyTest()
    Dim MaClass As New MonAssemblyClass
    MsgBox MaClass.MaFonction
    Set MaClass = Nothing
    End Sub
Plus d'infos dans ce précieux article : http://richnewman.wordpress.com/2007/04/15/a-beginner’s-guide-to-calling-a-net-library-from-excel/

Aucun commentaire: