Может ли код VBA создавать и использовать объекты .NET? Меня интересует конкретный класс System.IO.Compression.GZipStream.
Для информации GAC - это глобальный кэш сборок .NET.
Может ли код VBA создавать и использовать объекты .NET? Меня интересует конкретный класс System.IO.Compression.GZipStream.
Для информации GAC - это глобальный кэш сборок .NET.
Я думаю, что Энди получил этот ответ, но я не уверен, что аспект, касающийся правил загрузки CLR, совершенно правильный.
Сборка .NET, которая содержит класс, выступающий в качестве оболочки для GZipStream, будет доступна для COM и зарегистрирована так же, как любая другая библиотека и класс проекта COM. В этом отношении VBA найдет расположение сборки .NET, доступной для COM, через реестр. Было бы разумно поместить сборку в GAC, чтобы она не могла перемещаться (поскольку перемещение сборки приведет к недействительности информации реестра), но пока реестр указывает на нужное место, все должно быть в порядке.
Хорошее руководство для новичков по этой теме: здесь
Надеюсь это поможет...
VBA может использовать любые объекты .NET, доступные для COM. Я не знаю, есть GZipStream или нет, но я предполагаю, что вам было бы проще создать отдельный объект .NET, который является оболочкой для функциональности GZipStream, которую вы хотите использовать. Затем вы можете предоставить свой объект COM, а затем VBA должен его использовать.
Обратите внимание, что сборка, содержащая ваш COM-объект (и его библиотеку типов, я думаю, хотя я не уверен в этом), должна находиться либо в том же каталоге, что и основной исполняемый файл (winword.exe или что-то еще), либо в GAC. Это связано с правилами загрузки сборок в среде CLR.