【发布时间】:2011-01-02 22:06:14
【问题描述】:
使用 com-interop 将一组用户定义的类从 vba 传递到 .net(特别是 c#)的正确方法是什么?
这是我的 C# 代码。如果我从 vba 调用 Method1,它会因“预期的数组或用户定义类型”或“函数使用 Visual Basic 中不支持的自动化类型”而失败。
public class MyClass
{
public Method1(UserDefinedClass[] Parameters) { ... }
public Method2(Object Parameters) { ... }
}
我已经阅读了一些有关 MarshallAsAttribute 类的信息。这可能是 c# 代码中缺少的部分吗?
这是我正在使用的 vba 代码:
Dim udt As New UserDefinedClass
Dim myArray()
myArray(1) = udt
myClass.Method1(myArray)
myClass.Method2(myArray)
【问题讨论】:
-
我们需要更多信息。您能否添加类型的 VBA 定义和一些显示您调用 COM 接口的代码?
-
您的数组声明正在声明一个变体数组 - 它应该声明您的 UserDefinedClass 数组,例如"Dim myArray(0 To 3) As UserDefinedClass"
-
我应该提到这一点。我也尝试过,结果相同'函数使用 vb 不支持的自动化类型'。我真的认为问题出在 c# 中方法的定义,但完全有可能问题出在 vba 代码中。我是 VB 的新手。
标签: c# vba com-interop