Я пытаюсь вызвать функцию из DLL из VBA в Excel.Устранение неполадок вызова функции DLL из Excel Vba
My Excel VBA макрос выглядит следующим образом:
Declare PtrSafe Function TestFunction1 Lib "mylib.dll" (ByVal k As Double) As Double
Public Function TestDll(k As Double) As Double
Debug.Print ("Start")
Dim r As Double
r = TestFunction1(k)
Debug.Print ("Got result of " + r)
Debug.Print ("Done")
TestDll = r
End Function
Теперь, когда я называю ее из ячейки Excel с чем-то вроде "= TestDll (3.0)", он не работает. Я вижу строку «Начать» в непосредственном окне, но ничего больше. Это похоже на то, что ошибка происходит именно тогда, когда вызывается «TestFunction1». Excel отображает «#VALUE!» в ячейке.
Я также могу установить точку останова в отладчике, но когда я дойду до вызова TestFunction1, он просто закончится. Я не могу найти сообщение об ошибке.
Мой вопрос: как мне отладить это? Я не получаю сообщение об ошибке. Это просто не работает. Как я могу понять, что происходит не так?
Почему я получаю downvoted? Я действительно борюсь с этой проблемой, и я сначала попытался ее исследовать. Я просто не могу понять, куда идти. – carrie88
Вы никогда не назначаете значение 'r'. И вы никогда не объявляете 'ret' как Double. (Не уверен, что эти проблемы вызывают, но я предлагаю вам исправить их в любом случае.) – YowE3K
Вы можете попробовать добавить DLL-файл в ссылки на проект VBA и F2 для поиска метода в Проводнике объектов. Еще одна вещь, которую вы можете попробовать, - использовать 'As Object' вместо' As Double'. Я не думаю, что мы можем вам помочь, без какой-либо информации о 'mylib.dll' и' TestFunction1' – Slai