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

VBA代码是否可以实例化和使用.NET对象? 我感兴趣的具体类是System.IO.Compression.GZipStream。

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

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

包含充当GZipStream包装的类的.NET程序集将暴露给COM,并像其他任何COM项目库和类一样被注册。 在这方面,VBA将通过registryfindCOM暴露的.NET程序集的位置。 将程序集放到GAC中可能会很明智,因此它不能移动(因为移动程序集会使registry信息无效),但只要registry指向正确的位置,就应该没问题。

关于这个问题的一个很好的初学者教程就在这里

希望这可以帮助…

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

注意包含你的COM对象的程序集(和它的types库也是这样,我认为,虽然我不是那么肯定)需要与主可执行文件(winword.exe或者其他)在同一个目录下,或者在GAC。 这是由于CLR的assembly规则。