Comment référencer une dll en vba ?

jlrabaud Messages postés 3 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 7 janvier 2010 - 7 janv. 2010 à 11:22
cbert59 Messages postés 1 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 octobre 2010 - 11 oct. 2010 à 08:11
Bonjour,

La question est dans le sujet.
Je n'arrive pas à utiliser une dll comme référence dans une macro excell 2003.

Ma piste la plus sérieuse est d'utiliser regasm.exe :

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>regasm NS.Plugin.Wavenis.dll /tlb: NS.Plugin.Wavenis.tlb
Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.3053
Copyright (C) Microsoft Corporation 1998-2004. Tous droits réservés.

RegAsm : error RA0000 : Impossible de charger le fichier ou l'assembly 'NS.Lib,
Version=2008.12.10.1739, Culture=neutral, PublicKeyToken=null' ou une de ses dép
endances. Le fichier spécifié est introuvable.

Mais j'ai toujours une erreur.

please help.

6 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
7 janv. 2010 à 11:34
Salut,

comment t'y prends tu pour ajouter cette reference ?
Si tu coche simplement la référence dans la liste il est probable qu'excel ne la trouve pas il faut alors verifier dans un premier temps que la dll existe bien quelque par sur ton pc puis dans un deuxieme temps d'utiliser le bouton parcourir pour indiquer le chemein de cette dll.

A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
7 janv. 2010 à 11:45
Re,

en prime voici un exemple de ce qui peut être fait par macro pour verifier et activer une reference par macro.
Attention cette exemple est incomplet!

'Macro Created by   : Bigfish_le vrai
'Date               : 02-20-2008
'V2.0
'
Option Explicit

Sub ActiveRef() 'activation of the reference *Microsoft Visual Basic for Applications Extensibility 5.3*
    Dim MyRef As String, RefPath As String, TypeError As String
    RefPath = "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6"
    MyRef = "Vbe6ext.olb"
    MyRef = Dir(RefPath & MyRef)
    If MyRef <> "" Then
        Application.DisplayAlerts = False
        On Local Error Resume Next
        ThisWorkbook.VBProject.References.AddFromFile RefPath & MyRef
        If Err = 1004 Then
            Err.Clear
            TypeError = " The Reference could not be added "
            MsgBox TypeError & " or the Trust access to Visual Basic Project is disable or both !" _
            & vbCrLf & vbCrLf & "In order to allow the activation of the references, follow the process below :" & vbCrLf _
            & vbCrLf & "Point to Macro on the Tools menu, and then click Security." _
            & vbCrLf & "On the Trusted Publishers tab, check the Trust access to Visual Basic Project box. " _
            & vbCrLf & vbCrLf & "For more information please contact ...", vbExclamation, "Reference Missing..."
            TypeError = " The Reference could not be added "
        Else
            TypeError = " **Reference Activated** "
        End If
        Application.DisplayAlerts = True
    Else
        TypeError = " Reference not found "
    End If
    Application.DisplayAlerts = False
    RecError (TypeError)
End Sub

Sub RecError(ByVal TypeError As String) 'error report
    Dim CMDAppli As Double, CurrentPath As String, ErrorFile As String, MsgError As String, NbSub As Long
    CurrentPath = ThisWorkbook.Path & ""
    ErrorFile = "Error.txt"
    MsgError = Now & TypeError & ThisWorkbook.Name
    CMDAppli = Shell("cmd.exe /c echo " & MsgError & " >> " & ErrorFile, 0)
    End
End Sub


ici l'idée est de verifier quelque part dant ton projet, par exemple via une gestion d'erreur, que la dll est bien referencée, si ce n'est pas le cas tu peux alors t'inspirer de ce code pour le faire en auto.

A+
0
jlrabaud Messages postés 3 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 14:05
Merci pour la réponse rapide Bigfish,

Mais je n'arrive tout simplement pas à référencer une dll.
Dans Excel 2003, dans Microsoft visual basic, outils->references
Je clique parcourir, je vais chercher la dll, et je récupère le message : "impossible d'ajouter une référence au fichier spécifié".
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
7 janv. 2010 à 14:15
Ah pardon ce n'est pas ce que j'avais compris

autre raisons possible:

-la dll n'est pas compatible avec le VBA
-tes droits ne te permettent pas de faire cette manip

Désolé de ne pas pouvoir t'aider plus

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlrabaud Messages postés 3 Date d'inscription mercredi 10 décembre 2008 Statut Membre Dernière intervention 7 janvier 2010
7 janv. 2010 à 14:24
Je suis admin sur ce PC.

Merci.
0
cbert59 Messages postés 1 Date d'inscription lundi 23 novembre 2009 Statut Membre Dernière intervention 11 octobre 2010
11 oct. 2010 à 08:11
Bonjour,

J'ai le même problème, à savoir l'impossibilité de référencer dans Excel VBA une DLL écrite avec Visual Studio (en C#).
La DLL n'est pas dans la liste proposée en allant dans "Outils / Références", depuis le module VBA d'Excel, et message d'erreur si je sélectionne "à la main" la DLL via le bouton "Parcourir".
Si quelqu'un a une réponse, je suis preneur.

J'ai également un doute sur la façon d'appeler les fonctions de la DLL depuis du code VBA. Quelqu'un aurait-il un exemple ?

Merci de votre aide.
0
Rejoignez-nous