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

Ce document intitulé « Code vba pour référencer une dll sous access » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Rejoignez-nous