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