Code vba pour référencer une dll sous access

Pour référencer la DLL

'On vérifie que la référence n'existe pas déjà
For i = 1 To Application.References.Count
    If Application.References(i).Name = Split(Dir(Path), ".")(0) Then Find = True
Next

' On ajoute une référence de la DLL dans Access 
If Not find Then application.References.AddFromFile path

' On charge la DLL en mémoire
hDLL  = LoadLibrary(path)
If hDLL =  0 Then Err.Raise 15003, , msg_erreur(15003) 'Err.Raise 513, , "Impossible de trouver la DLL"

' On récupère l'adresse de la DLL 
adressDLL  = GetProcAddress(hDLL, "DllRegisterServer")

' On enregistre la DLL
If CallWindowProc(adressDLL, frm_hwnd, 0&, 0&, 0&) <> ERROR_SUCCESS Then
    ' si on échoue on essaie avec PsExec
    Shell chemin_psexec & " -s -i regsvr32 /s " & path
End If

' On libère la mémoire
FreeLibrary hDLL

Pour enlever la référencer à la DLL

' On supprime la DLL 
For i  = 1 To application.References.Count
    If application.References(i).Name =  Split(Dir(path), ".")(0) Then _
               application.References.Remove application.References(i)
Next

' On charge la DLL en mémoire
hDLL = LoadLibrary(path)
If hDLL = 0 Then Err.Raise 513, , "Impossible de trouver la DLL"

' On récupère l'adresse de la DLL 
adressDLL  = GetProcAddress(hDLL, "DllUnregisterServer")

' On enregistre la DLL
If CallWindowProc(adressDLL, frm_hwnd, 0&, 0&, 0&) <> ERROR_SUCCESS Then
    ' si on échoue on essaie avec PsExec
    Shell chemin_psexec & " -s -i regsvr32 /s /u " & path
End If

' On libère la mémoire
FreeLibrary hDLL

Rejoignez-nous