2016-12-13 8 views
0

Как я могу использовать свой проект C# в Excel (VBA), когда он находится в исполняемой форме?Добавить .NET EXE в качестве ссылки VBA (в Excel) для COM Interop

В Visual Studio, если я перейду к моим настройкам проекта и измените «Тип вывода» на «Библиотека классов», то я могу успешно добавить ссылку на мой проект в Excel VBA (просмотрев DLL в ссылках раздел).

Однако, когда мой «Выходной» установлен в «Windows Application», если я пытаюсь добавить ссылку (в пределах Excel VBA) для вновь созданного файла EXE, я получаю следующее сообщение об ошибке:

Can't add a reference to the specified file

Как я могу ссылаться на свой .NET EXE в Excel VBA?

(Моя цель с помощью ехе, а не DLL так, что мое приложение может использоваться как в качестве приложения Windows и как COM-объект)

ответ

2

Не зная точных деталей я просто догадаться, что экспорт DLL функции, требуемые Excel. EXE обычно не экспортирует никаких функций.

Хорошая вещь о .NET заключается в том, что вы можете легко создавать модульное приложение. Итак, почему бы не включить основные функции в DLL и создать приложение, которое может использовать функциональные возможности?

Таким образом, вы можете использовать DLL из VBA и все еще иметь приложение, которое вы можете использовать автономно.

+0

Спасибо за ваш ответ. Я не уверен, что [этот парень прав) (http://stackoverflow.com/questions/7054481/how-to-produce-a-mix-of-dll-and-exe-in-one-c-sharp -project-in-visual-studio-or-o/7055824 # 7055824), но он утверждает, что вы можете ссылаться на исполняемый файл .Net, как если бы это была dll, в любом случае, я бы предпочел не разворачивать 2 отдельных элемента, если это возможно. Было бы намного чище, если бы я мог просто отправить один экземпляр. – user966893

+0

Вы ** можете ** добавить любую сборку .NET ** ** в качестве ссылки в любом другом проекте **. NET **, это правда. .NET не волнует, является ли это сборкой с расширением .exe или .dll или .blurb, если это сборка .NET. Но это нечто существенно отличное от использования .NET DLL в Excel VBA! –

+0

Получил это. Я, кажется, помню, что VBA мог ссылаться на VB6 EXE, но, возможно, что-то подобное невозможно с .NET <=> VBA-связью. Фактически есть опция в ** Сведения о сборке ** свойств проекта .NET, которая позволяет вам установить «Сделать сборку COM-Visible». Этот параметр также включен для приложений Windows, но, возможно, он применим только к DLL. – user966893