3

我正在将用 VBA 编写的旧 excel 插件移植到 VB .NET。Excel 插件与许多外部 com 对象交互。代码排序如下所示:

Dim hurr as Object
Dim durr as String

hurr = CreateObject("COM Object")
durr = hurr.getString

我要做的是从 COM 对象中读取字符串并将其放入 durr 以供以后在我的程序中使用。

第二行导致上面发布的异常。如果我尝试使用 CStr/CType 进行强制转换,我会得到同样的异常。Visual Studio 监视窗口将 hurr.getString 的类型报告为“System.__ComObject”,而 VBA 监视窗口将类型报告为“Variant/Object/String”。Microsoft.VisualBasic.Information.TypeName(hurr.getString) 说类型是“字符串”。任何想法我应该如何让这个工作?

谢谢!

4

1 回答 1

1

这很荒谬,但为了完整起见,我想我会在这里发布答案。解决方案是在 hurr.getString 的末尾添加一对括号

所以工作代码如下所示:

Dim hurr as Object
Dim durr as String

hurr = CreateObject("COM Object")
durr = hurr.getString()

上面的代码给了我强制转换异常,无论出于何种原因,它都需要括号才能在这里工作。我只是要补充一点,使用后期绑定 com 对象是可怕的,应该不惜一切代价避免。

于 2009-12-21T20:21:34.473 回答