Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2401 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Collection References : ajouter une DLL automatiquement (Access 2000)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Collection References : ajouter une DLL automatiquement (Access 2000)

n°722286
petoulachi
A fortiori, brigadier chef
Posté le 11-05-2004 à 18:04:57  profilanswer
 

Dans mon application, je me sers d'une solution pour ignorer la molette de la souris. Cette solution nécessite que l'utilisateur installe dans les Références d'access une DLL MouseWheel.dll.
 
J'aimerai que cette installation soit automatique. Ainsi, je fourni la DLL avec le fichier .adp, et lorsque l'application se lance, elle installe automatiquement la DLL. Pour cela, j'utilise la commande

Code :
  1. Access.References.addFromFile (monFichier)


Sachant que monFichier est une string contenant le nom complet de la DLL (par exemple, "C:\monappli\MouseWheel.dll" ).
 
Le code se lance sans problème. Toutefois, lorsque j'ouvre un formulaire qui utilise cette DLL, j'ai cette erreur :  

Citation :


Erreur d'éxécution '-2147024770 (8007007e)':
 
Erreur Automation
Le module spécifié est introuvable


Et si je lance le débuggeur, je tombe sur une ligne de code  

Code :
  1. Set clsMouseWheel = New MouseWheel.CMouseWheel


Le code plante donc à l'utilisation de cette DLL.
 
Pourtant, si je consulte les références installés dans VBE, MouseWheel y figure bien, avec le bon chemin d'accès.  
Si je l'installe à la main, le plus surprenant c'est que là tout fonctionne.
 
Voici le code complet qui s'éxécute au lancement de l'application :

Code :
  1. Dim file As String
  2.     Dim ok As Boolean
  3.     ok = False
  4.    
  5.     Set fs = Application.FileSearch
  6.     file = Systeme.parentDir(CurrentProject.FullName) & "MouseWheel.dll"
  7.    
  8.     fs.LookIn = Systeme.parentDir(CurrentProject.FullName)
  9.     fs.FileName = "MouseWheel.dll"
  10.     'verifie que la DLL est bien dans le repertoire courant de l'application avant de l'installer
  11.     If fs.Execute() > 0 Then
  12.         Dim ref, ref2 As Access.Reference
  13.        
  14.         'Ce code est juste là pour desinstaller la DLL avant de l'installer
  15.         'Je voulais etre sur qu'il n'y ai pas de conflit avec une ancienne config de reference
  16.         Dim i, k As Integer
  17.         i = 1
  18.         For Each ref In Access.References
  19.             If ref.Name = "MouseWheel" Then
  20.                 Set ref2 = Access.References.Item(i)
  21.                 ok = True
  22.             End If
  23.             i = i + 1
  24.         Next
  25.         Set ref = Nothing
  26.         If ok Then
  27.             MsgBox ("on remove" )
  28.             Access.References.Remove ref2
  29.             Set ref2 = Nothing
  30.         End If
  31.         'Installation de la DLL
  32.         Access.References.AddFromFile (file)
  33.     Else
  34.         'MsgBox ("L'application nécessite que le fichier ""MouseWheel.dll"" soit installé dans le même répertoire que l'éxécutable." & vbCrLf & "Copier le fichier dans le répertoire de l'application (" & Systeme.parentDir(CurrentProject.FullName) & " ) et relancez-la." ), vbCritical
  35.     End If


Sur la MSDN, il donne le meme code pour l'installation et la suppression d'une référence. A n'y rien comprendre :/
 
Si quelqu'un a la moindre idée du problème, merci de m'aider, parce que là je n'en peux plus   :cry:


Message édité par petoulachi le 11-05-2004 à 18:06:03
mood
Publicité
Posté le 11-05-2004 à 18:04:57  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Collection References : ajouter une DLL automatiquement (Access 2000)

 

Sujets relatifs
[access] formulaireAccéder à une base Access à partir de Linux
[Access] Une requete qui fournit trop de resultatLabView, Delphi et DLL
[access/vba] boite de dialogue avec des boutons radio à l'intérieurlaiason excel Access
[C++] Problème de gestion de SAFERRAY transmis à une f° d'une dllACCESS
DLLDLL
Plus de sujets relatifs à : Collection References : ajouter une DLL automatiquement (Access 2000)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR