Почему Excel VBA при вызове надстройки вызывает сбой Excel?
Я использую 32-разрядную версию Excel 2010 (Windows 10.1) с загруженной надстройкой (которую я разработал). Мне нужно вызвать одну из функций надстройки (я назову ее changeText
) из VBA.
Я написал следующий код VBA за одним из листов:
Sub MakeChange()
Dim result As String
result = Application.Run("changeText", "teststring")
Debug.Print result
Debug.Print "Complete"
End Sub
и назначил этот Sub для кнопки на этом листе.
Если я запускаю эту функцию непосредственно из редактора VBA, она каждый раз работает нормально и возвращает правильный результат в окно отладки.
Если я вызываю функцию из Excel, нажимая кнопку, я получаю ошибку несоответствия типов (через окно сообщения) в первый раз. Если я затем снова нажимаю кнопку, все зависает, и единственный выход - убить процесс.
Если я перемещаю функцию в модуль уровня книги, происходит примерно то же самое - я получаю ошибку несоответствия типов в Application.Run
строка, в которой я нажимаю "Конец", затем снова то же самое при втором щелчке, но на этот раз приложение зависает после нажатия "Конец".
Надстройка является зрелой, и вызываемая функция прекрасно работает, когда вызывается непосредственно из Excel или иным образом вызывается надстройкой. Вызываемая функция XLL принимает строку и возвращает строку.
Кто-нибудь знает, что здесь может происходить, и, в частности, почему происходит сбой приложения?