У меня есть код vba, который отлично работает с версий Office 2003 до 2016.
Недавно компания переехала в офис 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
, обычно используемый для адаптации функций dll и вызовов API через 32-битные и 64-битные Windows и Office в паре (или нет) с командой ptrsafe
, кажется, полностью игнорируется в этой версии 365.
Если такое же объявление, приведенное выше, указано в условии #if
в верхней части модуля, vba не распознает функцию, возвращающую ' sub ошибка компиляции vba или функция не определена'.
EDIT:
Просто добавив информацию, которая может иметь отношение (я не знаю): Запуск
Windows 10 64bit ,
Офис 365 32бит ,
DLL находится в папке SYSWOW64 ...