2012-05-06 65 views
2

我正在尝试将一组对象作为结果传递给VBA,但Excel正在抱怨以下内容:如何通过COM将VB .NET数组哈希传递给VBA?

'将函数或接口标记为受限,或者该函数使用Visual Basic中不支持的自动化类型'。

我在网上看了一圈,发现了类似的问题,但没有看到我正在尝试做的一个。

我的函数声明如下:

<ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> _ 
Public Class Class1 

#Region "COM GUIDs" 
... 
#End Region 

Public Sub New() 
    MyBase.New() 
End Sub 

Private Const AT_HOME As Boolean = True 
Public Function hello() As System.String() 
    Dim a(10) As String 

    a(0) = "hello" 
    a(1) = "Goodbye" 

    Return a 
End Function 
Public Function CallArray(ByVal serviceName As String, _ 
            ByVal effectiveDate As String, 
            ByVal serviceParams() As System.Object, 
            ByRef ArrayRes() As System.Object) As System.Boolean 

VBA的抱怨System.Objects我的问题是,到底是如何你应该通过和.NET返回数组VBA。 ArrayRes()中的数据也是混合类型,它不仅仅是字符串等,它可以包含字符串,整数等数组。可能更容易映射到VBA。最后一件事情,如果VB.NET中的System.Object和Arrays不是这样,也许这是另一种方式,通过集合或列表,然后我打开它。我只需要将这些数据导入到VBA中。如果需要的话,我也可以转向C#。

感谢任何帮助或建议

+0

我怀疑真正的问题是在你的方式公开这个功能。它实际上是''接口声明的一部分,并且使用'属性?发布更多代码。 –

+0

增加了更多的代码 – Jamie

+0

这是一个真正的COM类,在VB.NET下的Visual Studio中,hello的公共功能工作得很好。所以我不认为它是由于我没有正确地暴露功能。它们可以被调用,但是这是将数据类型从VBA传递到VB .NET的一个问题,它们在较低级别上是不同的。 所以我需要的是可以传递哪些对象数据类型或如何做到这一点。我原以为微软会公布一些关于这个方面的知识,因为这是他们的产品,并且能够传递数组类型和哈希等是非常标准的东西。 – Jamie

回答

0

固定它是wasnt数据即将在需要这样的形式我创建了一个功能格式化和处理数据

+0

函数是什么? – JackOrangeLantern

相关问题