【发布时间】:2009-08-28 13:50:05
【问题描述】:
我刚刚更新了一个从 Powerpoint 中的 VBA 调用的 dll。所有开发都很顺利,但是当我尝试在另一台用户机器上进行部署时,我遇到了一个我不知道如何调试的问题。
发生的情况是,当在 VBA 中创建 .Net 对象时,返回的引用指向错误的对象,因此下一行失败并找不到方法。
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 文件的引用,然后重新添加即可解决问题。我仍然很想知道我可以看什么来帮助诊断问题,尽管我盲目地四处寻找最终找到了解决方案
-
我遇到了类似的问题,但是在创建本机 VBA 类的实例时,因此没有提及添加/删除(请参阅此处:stackoverflow.com/questions/2677091/…)-您是否进一步了解诊断这个,如果是的话,有什么建议吗?谢谢!
-
@Modan:您可以回答自己的问题,然后接受自己的回答,表明您已找到所需内容。