Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
592 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [résolu] utiliser une DLL .NET depuis VBA Excel 2003

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] utiliser une DLL .NET depuis VBA Excel 2003

n°978755
lohworm
Posté le 11-02-2005 à 15:02:37  profilanswer
 

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
mood
Publicité
Posté le 11-02-2005 à 15:02:37  profilanswer
 

n°978757
FlorentG
Unité de Masse
Posté le 11-02-2005 à 15:05:27  profilanswer
 

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/

n°978762
lohworm
Posté le 11-02-2005 à 15:09:34  profilanswer
 

FlorentG a écrit :

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/


 
c'est dans la doc MSDN ? (si oui, je trouverai en cherchant, sinon tu as un lien ?)
 
en tout cas, merci  :jap:  
Laurent

n°978765
FlorentG
Unité de Masse
Posté le 11-02-2005 à 15:10:19  profilanswer
 

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" :)

n°983360
lohworm
Posté le 16-02-2005 à 11:59:54  profilanswer
 

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 :
  1. ClassInterfaceAttribute(ClassInterfaceType.AutoDual)


-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

n°983364
FlorentG
Unité de Masse
Posté le 16-02-2005 à 12:00:55  profilanswer
 

Y'a aussi un attribut ComVisible au niveau de l'Assembly

n°983366
lohworm
Posté le 16-02-2005 à 12:05:33  profilanswer
 

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 ?

n°983369
FlorentG
Unité de Masse
Posté le 16-02-2005 à 12:07:33  profilanswer
 

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

n°983374
lohworm
Posté le 16-02-2005 à 12:10:08  profilanswer
 

bizarre, ça a marché sans que je ne code d'attribut ComVisisble !?  :pt1cable:

n°983379
lohworm
Posté le 16-02-2005 à 12:11:49  profilanswer
 

peut-être parce que la valeur par défaut est TRUE...

mood
Publicité
Posté le 16-02-2005 à 12:11:49  profilanswer
 

n°983387
FlorentG
Unité de Masse
Posté le 16-02-2005 à 12:17:12  profilanswer
 

Oui, c'est true par défaut :D

n°1291136
marikiki
a trop sèché la physique...
Posté le 24-01-2006 à 16:41:39  profilanswer
 

FlorentG a écrit :

Oui, c'est true par défaut :D


 
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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [résolu] utiliser une DLL .NET depuis VBA Excel 2003

 

Sujets relatifs
[résolu] [HTML] inserer du HTML dans un fichier HTMLutiliser fonction mail() chez free
C++ sous Win : HOOK sans DLL[Resolu] Problème de DIV avec un "padding" et un "display: inline;"
Insertion "propre" d'objet virtools [RESOLU] [OWC][OLAP][.NET VB] connexion serveur
Excel : problème de sauvegarde de formulaire[PHP] Problème avec une boucle (RESOLU)
Gérer les cookie avec une servlet [résolu]Connection à une BDD Access depuis VBA sous Excel
Plus de sujets relatifs à : [résolu] utiliser une DLL .NET depuis VBA Excel 2003


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR