Utiliser une DLL dans VBA sans VC++ sur la machine
runo
Messages postés26Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention15 avril 2011
-
4 févr. 2010 à 14:58
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
5 févr. 2010 à 10:57
Bonjour,
je me suis compilé une petite DLL sous VC++ avec qq accès de base :
Je l'appelle ensuite dans VB avec le code ci dessous (je précise que ma fichier .dll est dans le même répertoire que le fichier excel) :
' Little Functions in the DLL
Private Declare Function sum Lib "EEFUSE.dll" (ByVal Number1 As Long, ByVal Number2 As Long) As Long
Private Declare Function multiply Lib "EEFUSE.dll" (ByVal Number1 As Long, ByVal Number2 As Long) As Long
Private Declare Function substract Lib "EEFUSE.dll" (ByVal Number1 As Long, ByVal Number2 As Long) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
Private Declare Function SetDllDirectory Lib "kernel32" Alias "SetDllDirectoryA" (ByVal lpPathName As String) As Boolean
Public Sub MyEssai()
Dim a As Long
Dim b As Long
a = 2
b = 10
'map 'myLocalDLL' into the address space of the calling process.
Dim myLocalLib As Long
myLocalLib = LoadLibrary(ThisWorkbook.Path & "\EEFUSE.dll")
Debug.Print "Load Addr = " & myLocalLib
' unmap the DLL's address
FreeLibrary (myLocalLib)
End Sub
Jusque là pas de souci j'obtiens bien :
Load Addr = 107282432
12
20
-8
Le problème que j'ai est que je n'arrive pas à l'utiliser sur des PC qui n'ont pas VC++ d'installé... donc ce n'est pas portable.
A part ceux qui me répondront que je dois installé VC++, avez vous des idées ?
Merci
A voir également:
Utiliser une DLL dans VBA sans VC++ sur la machine
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 4 févr. 2010 à 15:12
Bonjour,
on ne voit là que des appels à des fonctions de librairies de Windows et pas du tout ce que contient TA dll EEFUSE.dll!
Que contient-elle donc ? (puisque c'est ce qu'elle contient, qui peut poser problème)
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
runo
Messages postés26Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention15 avril 2011 4 févr. 2010 à 15:20
Bonjour,
je m'auto réponds car j'ai trouvé la solution.
Il fallait que je change le paramètre "Use of MFC" dans les propriétés générales de mon projet DLL sous VC++ (mettre Use MFC in a static Library)
runo
Messages postés26Date d'inscriptionmercredi 5 octobre 2005StatutMembreDernière intervention15 avril 2011 5 févr. 2010 à 09:35
J'ai pas compris ta réponse BruNews....
J'ai été obligé de mettre cette option car il manquait des dépendances à ma DLL (sans doute).
Si je voulais l'utiliser sur un PC ou VC++ n'était pas installée (ce qui est tout à fait possible fort heureusement) je n'avais pas vraiment le choix...
Vous n’avez pas trouvé la réponse que vous recherchez ?