这与我的其他问题有些相关.
我一直在使用dll来编写excel电子表格.目前一切都在使用dll,而excel正在使用它.但是在声明函数时是否可以指定dll与excel文件位于同一目录中?
Declare Sub FortranCall Lib "Fcall.dll" (r1 As Long, ByVal num As String)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,我必须使用类似的东西:
Declare Sub FortranCall Lib "C:\temp\Fcall.dll" (r1 As Long, ByVal num As String)
Run Code Online (Sandbox Code Playgroud)
这有效,但在分发给我的办公室伙伴时会引起麻烦.将dll放在c:\ windows\system32等中也不是一个真正的选择.
以下是从 VBA 动态加载/调用 DLL 的三种可能性,包括相关信息的链接和一些示例代码。不能说我曾经使用过其中描述的任何解决方案,但鉴于 VBA 对静态路径的需求,这似乎是对选项的合理探索。
Application.Run调用来调用它。需要对 VBIDE API 进行可信的编程访问(即,您允许 VBA 执行生成代码的代码,然后再执行...就像宏病毒那样)。LoadLibraryWin32 API...现在您已经获得了指针和地址:这个可怕的代码(.zip 下载)本质上是一个巨大的、难以维护的 hack,它使用汇编语言来通过名称调用 API 函数。不过,看起来它仅适用于受支持的 Win32 API 函数的子集。这是另一个潜在的解决方案,建议在调用 DLL 之前以编程方式更新 PATH 环境变量。如果可行的话,这不是一个坏主意,因为您可以将其添加到工作簿打开事件中。
祝你好运!
| 归档时间: |
|
| 查看次数: |
8710 次 |
| 最近记录: |