Collection References : ajouter une DLL automatiquement (Access 2000)

Collection References : ajouter une DLL automatiquement (Access 2000) - VB/VBA/VBS - Programmation

Marsh Posté le 11-05-2004 à 18:04:57    

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
Reply

Marsh Posté le 11-05-2004 à 18:04:57   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed