我正在将在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监视窗口将hurr.getString类型报告为“ System .__ ComObject”,而VBA监视窗口将类型报告为“ Variant / Object / String”。 Microsoft.VisualBasic.Information.TypeName(hurr.getString)表示类型为“字符串”。有什么想法我应该如何开始工作吗?

谢谢!

最佳答案

这太荒谬了,但我认为我会在此处发布答案以求完整。解决方案是在hurr.getString的末尾添加一对方括号

因此,工作代码如下所示:

Dim hurr as Object
Dim durr as String

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


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

09-11 16:52