Я только что обновил dll, который вызывается из VBA в Powerpoint. Все разработки прошли хорошо, но когда я попытался развернуть на другой машине пользователя, у меня возникла проблема, когда я не знаю, как отлаживать.Неверный объект, возвращаемый из COM-вызываемого обертки
Что происходит, когда объект .Net создается в VBA, возвращаемая ссылка ссылается на неправильный объект, поэтому следующая строка не работает, если метод не найден.
Dim myObj As Foo.Bar
Public Sub RefreshData()
//'instantiate object
Set myObj = New Foo.Bar
//'call a method
myObj.HelloWorld
Последняя строка завершается с Ошибка выполнения «438» Объект не поддерживает это свойство или метод который обусловлен тем фактом, что myObj как-то типа «Wrong.Type» вместо " Foo.Bar».
«Wrong.Type» также находится в сборке, поэтому я предполагаю, что что-то не так с библиотекой типов, но я попытался регенерировать (используя regasm/codebase/tlb MyLib.dll), и это не помогло ,
Я не знаю, как это диагностировать дальше. Надеюсь, кто-то там может перечислить некоторые шаги по диагностике такого рода проблем?
В этом случае удаление ссылки на файл tlb, а затем добавление его снова решило проблему. Мне все еще интересно узнать, что я мог бы найти, чтобы помочь диагностировать проблему, несмотря на то, что слепое слепое слепое я нашел решение – Modan
У меня такая же проблема, но в создании экземпляра родного класса VBA, поэтому нет ссылку на добавление/удаление (см. здесь: http://stackoverflow.com/questions/2677091/automating-excel-through-the-pia-makes-vba-go-squiffy) - вы получили дальнейшее развитие в диагностике этого и если да, то какие-то предложения? Благодаря! –
@Modan: вы можете ответить на свой вопрос, а затем принять свой собственный ответ, чтобы сообщить, что нашли то, что ищете. – adamleerich