Ссылка на сборку VBA в C#

Как ссылаться на сборку VBA в приложении C# из Visual Studio 2010?

Я не могу найти его в диалоговом окне «Добавить ссылку».

Вот почему мне это нужно:

Ошибка 1 Тип «VBA.Collection» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «VBA, версия = 6.0.0.0, культура = нейтральная, PublicKeyToken = null». ...


person Moon    schedule 05.09.2010    source источник


Ответы (3)


Существует множество версий VBA, интегрированных в различные приложения. Судя по номеру версии, я предполагаю, что вам нужно использовать Project + Add Reference, вкладку Browse, выбрать c:\windows\system32\msvbvm60.dll. Это модуль поддержки времени выполнения для VB6. У него действительно есть класс Collection в пространстве имен VBA.

Попробуйте перепроверить, был ли компонент написан на VB6. Развертывание может быть интересным.

person Hans Passant    schedule 05.09.2010

«Сборка» — это набор функций .NET, упакованных в общую библиотеку DLL или EXE. VBA — это не .NET, поэтому он не существует в виде сборки. Однако вы можете получить доступ к компонентам VBA через уровень COM-взаимодействия.

Я думаю, что вы, вероятно, ищете это

http://support.microsoft.com/?kbid=323737

person Erik Funkenbusch    schedule 05.09.2010
comment
Я думаю, это ответ. Другой может вызвать «System.InvalidCastException». - person Deepak Mishra; 12.06.2015

Вам действительно не нужен тип VBA.Collection в С#, у вас есть гораздо лучшие доступные конструкции коллекций. Generic.List, Generic.Dictionary и т. д. Если вы посмотрите на них, вы, скорее всего, найдете то, что вам нужно.

Они строго типизированы, поэтому вы не будете приводить их к другим типам. Если вам нужен тип VBA «Вариант», вы можете использовать HashTable.

person Paul Farry    schedule 05.09.2010
comment
Я согласен. Но проблема в том, что COM, с которым я работаю, возвращает VBA.Collection - person Moon; 05.09.2010