我正在将一个在VBA中写入的旧excel插件移植到VB .NET中。 Excel插件与许多外部com对象进行交互。代码sorta如下所示:
Dim hurr as Object
Dim durr as String
hurr = CreateObject("COM Object")
durr = hurr.getString
我要做的是从COM对象中读取字符串并在durr中获取它以便稍后在我的程序中使用。
第二行会导致上面发布的异常。如果我尝试使用CStr / CType进行转换,我会得到相同的异常。 visual studio watch窗口将hurr.getString的类型报告为“System .__ ComObject”,而VBA监视窗口将类型报告为“Variant / Object / String”。 Microsoft.VisualBasic.Information.TypeName(hurr.getString)表示类型为“String”。任何想法我应该如何让这个工作?
谢谢!
答案 0 :(得分:1)
这很荒谬,但我想我会在这里发布完整的答案。解决方案是在hurr.getString
的末尾添加一对括号所以工作代码如下所示:
Dim hurr as Object
Dim durr as String
hurr = CreateObject("COM Object")
durr = hurr.getString()
上面的代码给了我一个转换异常,无论出于什么原因它需要括号才能在这里工作。我只想补充一点,使用后期绑定com对象非常糟糕,应该不惜一切代价避免使用。