http://blog.163.com/shikang999@126/
问题:在使用VBA时,有时我们会调用外部的Dll文件,而此DLL文件会随着打包程序的发放而放在不同的目录,由于Dll文件就放置在执行文件的一个相对路径下,这时在程序内部定义调用Dll文件时,其定义的路径为相对路径.然而很多时候程序并不能识别到定义的Dll文件路径。如何让程序自动识别相对路径,即为本问题所在!
解决:设置指定路径为当前系统目录即可.使用的API函数为SetCurrentDirectoryA
例子:
//下面的例子是,在VBA要执行的代码里,需要调用外部Dll文件"FEM.Dll"里的函数TestSub,而外部这Dll文件放在当前激活文件目录下"\Lib\FEM.Dll",在执行TestSub函数前,直接使用SetCurrentDirectoryA设置当前目录即可.看代码:
Public Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long '注意这是API函数的申明
Declare Sub TestSub Lib ".\Lib\FEM.dll"(ByVal a As Integer,ByVal b As Integer) '注意当中相对路径的写法
Sub RoundedRectangle1_Click()
SetCurrentDirectory(Application.ActiveWorkbook.Path) '很重要,设置当前激活目录
Call TestSub(1,2) '调用函数示例
End Sub