Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comment faire avec VB NET une DLL exploitable par vba ?

4 réponses
Avatar
Louis
Bonjour,
Je travaille avec .NET 2003.
Je cherche à construire une dll dans cet environnement qui puisse ensuite
être exploitable par des macros word VBA et je n'y arrive pas. (Pas de souci
pour que ma dll soit exploitable par un autre projet VB NET)
Quelqu'un peut-il me donner les étapes ou m'indiquer une documentation ?
Merci d'avance.
Louis

4 réponses

Avatar
Julien Bakmezdjian [MS]
Bonjour,

Il faut exposer votre DLL .NET en tant que composant COM qui sera alors
exploitable en VBA.
La commande "regasm" est la clé de voûte de ce système. En recherchante
regasm, VB.NET et VBA dans un moteur de recherche Web, vous devriez trouver
votre bonheur...

Cordialement,

Julien Bakmezdjian

"Louis" wrote in message
news:44c71ad5$0$19027$
Bonjour,
Je travaille avec .NET 2003.
Je cherche à construire une dll dans cet environnement qui puisse ensuite
être exploitable par des macros word VBA et je n'y arrive pas. (Pas de
souci pour que ma dll soit exploitable par un autre projet VB NET)
Quelqu'un peut-il me donner les étapes ou m'indiquer une documentation ?
Merci d'avance.
Louis



Avatar
Louis
Merci pour votre réponse.

Suite à consultation à d'autres forum, j'ai coché dans Visual Studio, la
case "Inscrire pour COM Interop" de la page de propriétés (configuration de
la génération du projet).

Et je peux maintenant dans VBA référencer (Outils->Références...) le .tlb
qui a été généré dans VS.

Néanmoins, avec le code ci-dessous dans VBA, j'obtiens le message :"Un
composant ActiveX ne peut pas créer d'objet."
Dim oo As Object
Set oo = GetObject(, Class1)

Merci d'avance pour toute suggestion,
Louis



"Julien Bakmezdjian [MS]" a écrit dans le
message de news:
Bonjour,

Il faut exposer votre DLL .NET en tant que composant COM qui sera alors
exploitable en VBA.
La commande "regasm" est la clé de voûte de ce système. En recherchante
regasm, VB.NET et VBA dans un moteur de recherche Web, vous devriez
trouver votre bonheur...

Cordialement,

Julien Bakmezdjian

"Louis" wrote in message
news:44c71ad5$0$19027$
Bonjour,
Je travaille avec .NET 2003.
Je cherche à construire une dll dans cet environnement qui puisse ensuite
être exploitable par des macros word VBA et je n'y arrive pas. (Pas de
souci pour que ma dll soit exploitable par un autre projet VB NET)
Quelqu'un peut-il me donner les étapes ou m'indiquer une documentation ?
Merci d'avance.
Louis







Avatar
Patrice
Deux solutions :

1) Class1 devrait être entre guillemets je pense. J'utilise plutôt
CreateObject (GetObject récupère un objet existant). Au besoin vérifier dans
le registre que le progid est bon...

2) Si la TLB est référencée, faire un New de la classe est plus simple.
Déclarer le type également plutôt que d'utiliser Object (sinon inutile de
référencer la TLB)

--
Patrice

"Louis" a écrit dans le message de news:
44c765ce$0$18999$
Merci pour votre réponse.

Suite à consultation à d'autres forum, j'ai coché dans Visual Studio, la
case "Inscrire pour COM Interop" de la page de propriétés (configuration
de la génération du projet).

Et je peux maintenant dans VBA référencer (Outils->Références...) le .tlb
qui a été généré dans VS.

Néanmoins, avec le code ci-dessous dans VBA, j'obtiens le message :"Un
composant ActiveX ne peut pas créer d'objet."
Dim oo As Object
Set oo = GetObject(, Class1)

Merci d'avance pour toute suggestion,
Louis



"Julien Bakmezdjian [MS]" a écrit dans le
message de news:
Bonjour,

Il faut exposer votre DLL .NET en tant que composant COM qui sera alors
exploitable en VBA.
La commande "regasm" est la clé de voûte de ce système. En recherchante
regasm, VB.NET et VBA dans un moteur de recherche Web, vous devriez
trouver votre bonheur...

Cordialement,

Julien Bakmezdjian

"Louis" wrote in message
news:44c71ad5$0$19027$
Bonjour,
Je travaille avec .NET 2003.
Je cherche à construire une dll dans cet environnement qui puisse
ensuite être exploitable par des macros word VBA et je n'y arrive pas.
(Pas de souci pour que ma dll soit exploitable par un autre projet VB
NET)
Quelqu'un peut-il me donner les étapes ou m'indiquer une documentation ?
Merci d'avance.
Louis











Avatar
Louis
La solution 2 est la bonne.
Merci.
Louis

"Patrice" a écrit dans le message de
news:
Deux solutions :

1) Class1 devrait être entre guillemets je pense. J'utilise plutôt
CreateObject (GetObject récupère un objet existant). Au besoin vérifier


dans
le registre que le progid est bon...

2) Si la TLB est référencée, faire un New de la classe est plus simple.
Déclarer le type également plutôt que d'utiliser Object (sinon inutile de
référencer la TLB)

--
Patrice

"Louis" a écrit dans le message de news:
44c765ce$0$18999$
> Merci pour votre réponse.
>
> Suite à consultation à d'autres forum, j'ai coché dans Visual Studio, la
> case "Inscrire pour COM Interop" de la page de propriétés (configuration
> de la génération du projet).
>
> Et je peux maintenant dans VBA référencer (Outils->Références...) le


.tlb
> qui a été généré dans VS.
>
> Néanmoins, avec le code ci-dessous dans VBA, j'obtiens le message :"Un
> composant ActiveX ne peut pas créer d'objet."
> Dim oo As Object
> Set oo = GetObject(, Class1)
>
> Merci d'avance pour toute suggestion,
> Louis
>
>
>
> "Julien Bakmezdjian [MS]" a écrit dans


le
> message de news:
>> Bonjour,
>>
>> Il faut exposer votre DLL .NET en tant que composant COM qui sera alors
>> exploitable en VBA.
>> La commande "regasm" est la clé de voûte de ce système. En recherchante
>> regasm, VB.NET et VBA dans un moteur de recherche Web, vous devriez
>> trouver votre bonheur...
>>
>> Cordialement,
>>
>> Julien Bakmezdjian
>>
>> "Louis" wrote in message
>> news:44c71ad5$0$19027$
>>> Bonjour,
>>> Je travaille avec .NET 2003.
>>> Je cherche à construire une dll dans cet environnement qui puisse
>>> ensuite être exploitable par des macros word VBA et je n'y arrive pas.
>>> (Pas de souci pour que ma dll soit exploitable par un autre projet VB
>>> NET)
>>> Quelqu'un peut-il me donner les étapes ou m'indiquer une documentation


?
>>> Merci d'avance.
>>> Louis
>>>
>>
>>
>
>