【发布时间】:2011-11-09 01:33:31
【问题描述】:
我有一个在 VBA (Excel) 中使用的 COM 对象(用 C#.NET 构建),枚举 COM 对象的字段并自动引用它们会非常好。在 .NET 中,这可以通过反射来完成。有没有办法在 VBA 中做到这一点?
所以,而不是
Dim x As MyCOMObject
Set x = New MyCOMObject
x.f1 = 1
x.f2 = 2
x.f3 = 3
有点像:
Dim x As MyCOMObject
Set x = New MyCOMObject
For i = 0 to COMFieldCount(x) - 1
SetCOMField(x, GetCOMFieldName(i), i+1)
Next i
【问题讨论】:
-
我什至不会在 C# 中使用反射来执行此操作。你有没有想过做一个这样的功能?
-
@parapurarajkumar,您为什么不在 C# 中使用反射来执行此操作?我正在尝试创建一个执行此操作的函数,因此提出了问题。
-
@GTG,感谢您的链接——通过官方渠道很难找到 DLL,而且似乎与示例不完全匹配,但我认为这将是答案。
-
不幸的是,@GTG 的链接对我不起作用。奇怪的是,VarType(x) 等于 vbString (8)。但这显然不是字符串;我可以显式访问它的字段和方法。 TLI.TypeInfoFromRecordVariant(x) 返回 Nothing。
标签: vba com field enumerate typelib