如何将UDT数组从excel vba传递到vb.net

时间:2013-08-07 17:02:44

标签: arrays vb.net excel-vba vba excel

如何将用户定义的类类型ByRef的数组从excel vba传递到vb.net?我有一个类似的帖子处理传递双数组here,我尝试使用与我的UDT相同的方法,但它不起作用。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

很抱歉回答我自己的问题(再次),这与我在这个问题中链接的其他问题非常相似,但我能够以与其他问题的答案几乎相同的方式完成它。我只需改变一些折射参数。

在vb.net代码中,我将参数作为对象,获取该对象的类型(它识别为object()数组),然后使用以下函数将该对象数组直接转换为所需的类数组vb.net

Friend Function ComObjectArrayToPointArray(ByVal comObject As Object) As Point()
    Dim thisType As Type = comObject.GetType
    Dim fibType As Type = Type.GetType("System.Object[]")
    Dim fibArray(0) As Point
    If thisType Is fibType Then
        Dim args(0) As Object
        Dim numEntries As Integer = CInt(thisType.InvokeMember("Length", BindingFlags.GetProperty, _
                                        Nothing, comObject, Nothing))
        ReDim fibArray(numEntries - 1)
        For j As Integer = 0 To numEntries - 1
            args(0) = j
            fibArray(j) = DirectCast((thisType.InvokeMember("GetValue", BindingFlags.InvokeMethod, _
                                    Nothing, comObject, args)), Point)
        Next
    End If

    Return fibArray

End Function