utiliser une DLL .NET depuis VBA Excel 2003 [résolu] - C#/.NET managed - Programmation
Marsh Posté le 11-02-2005 à 15:05:27
Je pense qu'il faut effectivement un wrapper VBA veut des DLL COM...
Attend...
Y'a moyen d'enregistrer des DLL .NET en COM (y'a un attribut d'assembly ComVisible d'ailleurs), donc normalement y'a moyen /CONTENT/
Marsh Posté le 11-02-2005 à 15:09:34
FlorentG a écrit : Je pense qu'il faut effectivement un wrapper VBA veut des DLL COM... |
c'est dans la doc MSDN ? (si oui, je trouverai en cherchant, sinon tu as un lien ?)
en tout cas, merci
Laurent
Marsh Posté le 11-02-2005 à 15:10:19
Normalement ouais, ça doit être dans la doc. Aussi dans les paramètres de la solution, t'as un truc genre "enregistrer pour COM Interop"
Marsh Posté le 16-02-2005 à 11:59:54
j'ai donc fait le test.
En plus de cocher "Enregistrer pour Com Interop", il faut aussi
-soit préciser les classes à exposer, soit le spécifier une exposition globale au niveau de l'assembly si c'est toutes les classes, avec
Code :
|
-coder un constructeur vide
cf http://www.microsoft.com/france/ms [...] omvba.html
et bien sûr, pour les fonctions renvoyant des valeurs et pour les arguments, il faut que cela soit compatible avec les types (élémentaires ?) disponibles en VBA (ainsi, par exemple, la Collection de .NET ne passe pas le cap de la compilation pour ComInterop)
voilà où j'en suis pour l'instant
Merci à FlorentG
laurent
Marsh Posté le 16-02-2005 à 12:05:33
FlorentG a écrit : Y'a aussi un attribut ComVisible au niveau de l'Assembly |
c'est pour être plus fin sur ce qui est visible ou pas, c'est ça ?
Marsh Posté le 16-02-2005 à 12:07:33
C'est pour indiquer si l'Assembly est visible. Après, il y a des attributs au niveau des classes pour masquer celles qui faut
Marsh Posté le 16-02-2005 à 12:10:08
bizarre, ça a marché sans que je ne code d'attribut ComVisisble !?
Marsh Posté le 24-01-2006 à 16:41:39
FlorentG a écrit : Oui, c'est true par défaut |
ch'uis bien embêtée, parce que moi, c'est false par défaut ET EN PLUS, c'est grisé...
Alors comment je fais pour intégrer l'assembly "qui permettra à mes utilisateurs d'ouvrir excel via mon programme Csharp"?
merci les jeunes!
Marikiki
Marsh Posté le 11-02-2005 à 15:02:37
Avant de faire le test, je me renseigne, au cas où quelqu'un aurait déjà été confronté au cas suivant :
Soit une appli en .NET
Soit des feuilles Excel 2003 avec code VBA derrière
Comme les deux devront accéder, disons à une BDD, avec les mêmes demandes en gros, on pensait faire une DLL pour la couche d'accès aux données.
Si la DLL est faite avec .NET, sera-t-elle exploitable par le code VBA des macros Excel (et ce, j'imagine, probablement via un wrapper ou que sais-je d'autre)?
Ou faut-il plutôt la faire en VB6 pour qu'elle soit utilisable par les deux parties ?
Merci
Laurent
Message édité par lohworm le 16-02-2005 à 12:01:48