Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
Private Declare Function CallWindowProc Lib "USER32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim DllHand As Long
Dim DllProc As Long
    ChDrive App.Path    '用来改变驱动器到指定的有说要dll的驱动器
    ChDir App.Path & "\YCTBDDJ_JH" '这一句是将路径指向dll所在的目录
    DllHand = LoadLibrary(App.Path & "\YCTBDDJ_JH\PMSMDll.dll")
    If DllHand = 0 Then MsgBox "没法加载DLL,请先将该工程保存重新启动程序!": Exit Sub
    DllProc = GetProcAddress(DllHand, "PMSMAnal")
    If DllProc = 0 Then MsgBox "没找到此函数,请先将该工程保存重新启动程序!": Exit Sub
    CallWindowProc DllProc, DllHand, 0, 0, 0
'    执行你的DLL的函数
    Call PMSMAnal
    FreeLibrary DllHand '释放DLL
还有一个dll也是用这样的方法调用的,单独调用没有问题,但是连续调用两次后就会出现无法载入dll的错误,路径都是正确的