OVH Cloud OVH Cloud

VBA Chemin d'une DLL installée par un logiciel

14 réponses
Avatar
Eric S
Bonjour,

Je suis en train de développer un logiciel qui, en plus du programme
lui-même, fournit une DLL et une feuille de calcul Excel utilisant la
DLL. L'ensemble est installé sur l'ordinateur de l'utilisateur dans le
dossier par défaut pour les programmes. C'est là que commencent les
problèmes. Ce dossier est variable, typiquement:
sous Win32 : c:\Program Files
sous Winx64: c:\Program Files (x86)
ou tout autre si les paramètres de windows ont été changés.

Comment faire pour appeler ma DLL en tenant compte de cet aspect variable?

Jusqu'à présent, j'avais codé ça en statique dans l'entête de la macro:

Declare Function LitFichier Lib "c:\Program Files\MonLogiciel\MaLib.dll"
(ByVal Nom_Fichier As String, SizeNom As Long) As Long

Des pistes?

Éric

4 réponses

1 2
Avatar
isabelle
tu pourrais le faire dans la macro open,

Sub Ouvrir()
Const Cible = &H26
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(Cible)
Set objFolderItem = objFolder.Self
AddIns.Add(objFolderItem.Path).Installed = True
AddIns(objFolderItem.Path).Installed = True
End Sub

isabelle

Le 2010-02-21 14:18, Eric S a écrit :
Certes, mais comment je fais pour intégrer sans l'appel aux fonctions
de la DLL, sachant que la déclaration se fait avant le début du code
exécutable?

J'imagine qu'il y a une méthode pour charger dynamiquement la DLL
alors qu'actuellement, je suis plutôt en statique:

Declare Function LitFichier Lib "c:Program
FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As
Long) As Long

Sub Ouvrir()

Dim Resultat As String

Resultat = "donnees.txt"
If LitFichier(Resultat, Len(Resultat)) <> 0 Then
MsgBox "Impossible de charger le fichier donnees.txt"


Eric

Le 21/02/2010 19:49, isabelle a écrit :


Le 2010-02-21 12:37, Eric S a écrit :

Résultat: C:Program Files (x86)



c'est bon,
pour winxp
Résultat: C:Program Files
isabelle





Avatar
isabelle
tu pourrais le faire dans la macro open,

Sub Ouvrir()
Const Cible = &H26
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.NameSpace(Cible)
Set objFolderItem = objFolder.Self
AddIns.Add(objFolderItem.Path & "MaLib.dll").Installed = True
AddIns(objFolderItem.Path & "MaLib.dll").Installed = True
End Sub

isabelle

Le 2010-02-21 14:18, Eric S a écrit :
Certes, mais comment je fais pour intégrer sans l'appel aux fonctions
de la DLL, sachant que la déclaration se fait avant le début du code
exécutable?

J'imagine qu'il y a une méthode pour charger dynamiquement la DLL
alors qu'actuellement, je suis plutôt en statique:

Declare Function LitFichier Lib "c:Program
FilesMonLogicielMaLib.dll" (ByVal Nom_Fichier As String, SizeNom As
Long) As Long

Sub Ouvrir()

Dim Resultat As String

Resultat = "donnees.txt"
If LitFichier(Resultat, Len(Resultat)) <> 0 Then
MsgBox "Impossible de charger le fichier donnees.txt"


Eric

Le 21/02/2010 19:49, isabelle a écrit :


Le 2010-02-21 12:37, Eric S a écrit :

Résultat: C:Program Files (x86)



c'est bon,
pour winxp
Résultat: C:Program Files
isabelle





Avatar
Eric S
> AddIns.Add(objFolderItem.Path & "MaLib.dll").Installed = True



Ça plante à cette étape là en me disant :

La Méthode Add de la classe AddIns a échoué.

J'ai vérifié que le chemin de la DLL était bon avec le code suivant :

Resultat = objFolderItem.Path & "ConvertisseurLibConv.dll"
Application.AddIns.Add (Resultat)

En fait, à regarder sur internet, j'ai l'impression que AddIns ne
s'applique qu'aux DLL COM, ce qui n'est pas le cas de ma DLL.

Eric
Avatar
Eric S
Le 21/02/2010 20:56, michdenis a écrit :
"Excel 2003 VBA Programmer's Reference"
Paul Kimmel, Stephen Bullen
John Green, Rob Bovey, Robert Rosenberg



Je vais voir si je peux mettre la main sur le bouquin.


à partir de la fenêtre de l'éditeur de code, barre des menus /
référence / tu utilises le bouton parcourir et dans l'arborescence
des fichiers de l'explorateur Windows, tu retrouves la location
de ton fichier Dll et tu l'ajoutes comme référence.



Message d'erreur : Impossible d'ajouter une référence au fichier spécifié.

Eric
1 2