begin process at 2010 02 10 01:10:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

ActiveX / COM

 > 

Enregister une DLL .NET/COM pour être utilisée en VBA


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Enregister une DLL .NET/COM pour être utilisée en VBA

mardi 25 mars 2008 à 16:57:28 | Enregister une DLL .NET/COM pour être utilisée en VBA

bossun

Salut,

J'ai fait une DLL que je voudrais utiliser en VBA dans Excel ou Access.

En fait tout fonctionne très bien sur mon poste de développement mais quand je déploie ça sur les postes de prod, ça ne marche pas.

Je fais un regasm.exe mais je ne peux pas l'ajouter en reférence dans mes projets vba...

qqn aurait-il une diée...

voilà le code de ma dll...

namespace CRMFunctions
{
    [ClassInterface(ClassInterfaceType.None),
     ComDefaultInterface(typeof(ICRMFunctions))]
    public class CRMFunctions: ICRMFunctions
    {
        //public CRMFunctions()
        //{
       
        //}
        [ComRegisterFunctionAttribute]
        public static void RegisterFunction(Type type)
        {
            RegistryKey key = null;
            Registry.ClassesRoot.CreateSubKey(GetSubKeyName(type));
            key =Registry.ClassesRoot.CreateSubKey("CLSID\\{"+type.GUID.ToString().ToUpper()+"}\\InprocServer32");
            key.SetValue("", Environment.GetFolderPath(Environment.SpecialFolder.System)+@"\mscoree.dll");
        }

        [ComUnregisterFunctionAttribute]
        public static void UnregisterFunction(Type type)
        {
            Registry.ClassesRoot.DeleteSubKey(GetSubKeyName(type), false);
        }

        private static string GetSubKeyName(Type type)
        {
            string s = @"CLSID\{" + type.GUID.ToString().ToUpper() + @"}\Programmable";

            return s;
        }

        public DateTime DateFixing_1()
        {
            string sqlDateFixing = "Select j_1 From dbo.VW_STD_DATEFIXING";
            return DateTime.Parse(dBAccess.GetValue(sqlDateFixing).ToString());
        }
        public DateTime DateFixing_2()
        {
            string sqlDateFixing = "Select j_2 From dbo.VW_STD_DATEFIXING";
            return DateTime.Parse(dBAccess.GetValue(sqlDateFixing).ToString());
        }
        public DateTime DateFixing_3()
        {
            string sqlDateFixing = "Select j_3 From dbo.VW_STD_DATEFIXING";
            return DateTime.Parse(dBAccess.GetValue(sqlDateFixing).ToString());
        }

  
    }
}

Merci d'avance
Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
mercredi 26 mars 2008 à 11:26:40 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

bossun

Réponse acceptée !

j'ai trouvé ce qu'il faut faire,

il suffit juste de faire un regasm.exe /codebase /tlb mydll.dll

j'avais pas mis le parametre tlb, c'est pour ça que ca plantait.


Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
vendredi 13 juin 2008 à 09:58:10 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

HansPrestat

J'ai un petit problême pour utiliser ma dll C# 2.0 sous Access 2003. Pourrais-tu m'indiquer la marche à suivre?
Cette dll est censé récupérer le chemin d'un fichier via une sorte d'OpenfileDialog. Si il y a une autre manière de faire ça mais qu'en vba alors je suis preneur. Help me please
vendredi 13 juin 2008 à 10:23:39 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

bossun

As-tu fait ce que j'ai noté dans mon poste précédent?? c-à-d enregistrer ta dll avec regasm???

sans cela tu ne peux pas utiliser une dll .net en vba... à ma connaissance

Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
vendredi 13 juin 2008 à 13:20:49 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

HansPrestat

Désolé mais je suis tout jeune débutant vba. 2 ans pour .net. Je n'ai pratiquement rien compris à ton code à part le sujet (lol). Est-ce-que ça serait possible de détailler ce que je dois faire? Ex: Fichier > ...
vendredi 13 juin 2008 à 13:45:32 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

bossun

Alors en .net tu sais créer une DLL COM.

Alors ta dll il faut l'enregistrer. Les anciennes dll, c'était avec Regrsv32 mais les Dll .net c'est avec RegAsm.

regasm se trouve dans le repertoire de ton framework 2.0. il faut l'exécuter en ligne de commande.

regasm.exe /codebase  /tlb Tadll.dll

dans le repertoire de ta DLL tu va voir un fichier Tadll.tlb qui va être crée. ce fichier va te servir à utiliser ta dll .net depuis vba par ex.

Dans otn projet vba, tu va dans références, et tu va chercher l'assembly de ta Dll que tu va chocher.

après il ne te reste plus qu'à l'utilsiser comme n''importe quelle bibliothèque.


Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F
vendredi 13 juin 2008 à 20:09:17 | Re : Enregister une DLL .NET/COM pour être utilisée en VBA

HansPrestat

Merci beaucoup de ton aide. Lundi j'essaye promis. Et je te tiens au courant.



Cette discussion est classée dans : public, type, datetime, datefixing, sqldatefixing


Répondre à ce message

Sujets en rapport avec ce message

datetime [ par sab_safaa ] j ai un champ de type "datetime" dans une table de la db jexecute une requete qui doit extraire les valeurs de ce champs grace à DateTime p=BDR.GetDat Problème d'ajout d'un Datetime dans SQLServeur avec C# [ par Electrochip ] Bonjour,J'ai un gros problème, j'aimerai ajouter dans une base de donnée SQLServeur une occurence reprenant divers champs de type texte, mais aussi un Datagrid et objet [ par z_san ] Bonjour j'ai besoin de d'afficher un datagrid (ou un autre controle de type vbGrid) qui doit avoir cette tête la int | DateTime | DateTime | UserCont Interface générique et héritage [ par thiosyiasar ] Boujour,  J'ai un fournisseur de se Problème lors de la détection de mes Addin-in (System.Addin) [ par teddyalbina ] Bonjour j'ai un soucis avec System.Addin qui ne détecte pas mes addins. Cela fait plusieurs jours que je cherche une solution mais je sèche donc voici C# et la réflection [ par t00f ] Bonjour,Je viens vers vous pour avoir une petite explication sur la réflection. J'aimerais créer un objet A qui dérive un objet que nous dirons persis DateTime sql server [ par quitaime ] Bonjour, J'effectue une requete sql de type UPDATE et je dois envoyer un variable de type DATETIME dans une base  de donnnée sql, au niveau de la base Probleme de définition de variable [ par tiju50 ] Comme je suis débutant, J'ai voulu créer une petite application Windows pour essayer et découvrir quelques possibilités en Csharp.Grâce à mon école, j fusion Datetime de type Date et DateTime de type Heure [ par babe59 ] Bonjour,J'ai un DateTime avec une date uniquement (provient d'un DatetimePicker) et un autre DateTime qui ne contient que l'heure (provient d'un datet Insertion date dans SQL 2005 [ par floriandevelop ] Hello,j'aimerais insérer la date du jour, du type DateTime C# dans un champ SQL 2005 de type DateTime.Lorsque j'exécute cette requête j'obtiens le mes


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales