VBA代码可以实例化并使用.NET对象吗?我感兴趣的特定类是System.IO.Compression.GZipStream。
对于Info GAC是.NET全局程序集缓存
答案 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的装配规则。