我有一个VBA代码,可以在Office 2003到2016版本之间正常运行。
最近该公司移至Office 365,并且相同的代码无法从dll加载功能。
其中一个功能为例:
Public Declare PtrSafe Function hllapi_init Lib "C:\Windows\SysWOW64\libhllapi.dll" (ByVal tp As String) As Long
但是,当调用函数时,即使声明中引用了完整路径,vba / excel也会显示运行时错误48'找不到文件'。
但是,显然,该文件存在,因为在早期版本的Office中可以完全准确地运行相同的代码。
365版本是什么? 搜索有关声明函数和或api的文档,但未发现特定于365版本的任何内容。
此外,#if
语句(通常用于通过与ptrsafe
命令配对(或不配对)的Windows和Office的32位和64位来适应dll函数和api调用)在此似乎完全被忽略了。 365版本。
如果在模块顶部的#if
条件内声明了与上述示例相同的声明,则vba不会识别返回“ vba编译错误子或未定义函数”的函数。
编辑: 只是添加可能相关的信息(我不知道):运行 Windows 10 64位, Office 365 32位, DLL位于SYSWOW64文件夹中...