Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Enregister une DLL .NET/COM pour être utilisée en VBA [ Windows / ActiveX / COM ] (bossun)

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é 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 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 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


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.