【问题标题】:Conversion from type 'String' to type 'String' is not valid从“String”类型到“String”类型的转换无效
【发布时间】:2012-05-16 10:08:27
【问题描述】:

我正在将一个用 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) 说类型是“字符串”。有什么想法我应该如何让它发挥作用?

谢谢!

【问题讨论】:

    标签: vb.net casting com-object


    【解决方案1】:

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

    所以工作代码如下所示:

    Dim hurr as Object
    Dim durr as String
    
    hurr = CreateObject("COM Object")
    durr = hurr.getString()
    

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

    【讨论】:

      猜你喜欢
      • 2014-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多