У меня есть библиотека типов, которая была создана в Visual C++, и я пытаюсь вызвать ее функции в VBA. У меня есть два файла: utility.dll
и utility.tlb
. Я включил ссылку на библиотеку в моем проекте VBA, перейдя в "Ссылки" и просмотрев utility.tlb
. Но когда я скомпилирую проект, я получаю сообщение об ошибке:
File not found: utility.dll
Я поместил оба файла библиотеки в тот же каталог, что и файл.xlsm с проектом VBA. Я подумал, возможно, это была проблема с регистрацией DLL, поэтому я попытался запустить regsvr32
на utility.dll
и получил следующее сообщение об ошибке:
The module "utility.dll" may not compatible with the version of Windows
that you're running. Check if the module is compatible with an x86 (32-bit)
or x64 (64-bit) version of regsvr32.exe.
У меня есть доступ к исходному коду, файлам.sln и т.д. Для проекта C++, который создал файлы библиотеки.
Что мне делать, чтобы мой проект VBA мог использовать библиотеку этого типа?
Проблема заключалась в том, что библиотека типов имела путь поиска DLL, закодированный в папку, которая существовала только на машине разработки. Изменение этого устранило ошибку.
may not compatible
[sic].