2012-05-06 61 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

相關問題