如何在Excel VBA中使用.NET对象?

时间:2008-10-07 17:08:58

标签: .net excel excel-vba vba

VBA代码可以实例化并使用.NET对象吗?我感兴趣的特定类是System.IO.Compression.GZipStream。

对于Info GAC是.NET全局程序集缓存

2 个答案:

答案 0 :(得分:10)

我认为安迪坚持这个答案,但我不确定CLR加载规则的方面是完全正确的。

保存作为GZipStream包装器的类的.NET程序集将公开给COM并像其他任何COM项目库和类一样注册。在这方面,VBA将通过注册表找到COM暴露的.NET程序集的位置。将程序集放入GAC可能是明智的,因此它无法移动(因为移动程序集会使注册表信息无效),但只要注册表指向正确的位置,就应该没问题。

关于这个主题的好初学者教程是here

希望这会有所帮助......

答案 1 :(得分:3)

VBA可以使用暴露给COM的任何.NET对象。我不知道GZipStream是否存在,但我猜你会更容易创建一个单独的.NET对象,它是你想要使用的GZipStream功能的包装器。然后,您可以将对象公开给COM,然后VBA应该使用它。

请注意,包含COM对象的程序集(及其类型库,我认为,虽然我对此不肯定)需要与主可执行文件位于同一目录中(winword.exe或其他)或者在GAC中。这是由于CLR的装配规则。