Вызов работающего приложения C # из VBA - PullRequest
1 голос
/ 01 апреля 2010

У меня есть некоторый код VBA, который должен общаться с работающим приложением c #. Что бы это ни стоило, приложение c # запускается как служба и предоставляет интерфейс через .net remoting.

Я опубликовал вопрос, касающийся конкретной проблемы, с которой я столкнулся ( Из VB6 в .net через COM и Remoting ... Какой беспорядок! ), но я думаю, что моя структура может быть неверной ...

Итак, я делаю шаг назад - как лучше всего это сделать? Одна вещь, которую стоит принять во внимание, это то, что я хочу вызывать запущенное приложение, а не просто вызывать предварительно скомпилированную DLL ...

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

Я придумал решение, используя мою оригинальную структуру ...

То есть приложение VBA вызывает приложение-оболочку COM, которое переводит все типы из .Net в безопасные типы COM. Затем эта обертка вызывает основной сервис с использованием удаленного взаимодействия .net.

Проблема, с которой я столкнулся, заключалась в том, что общие библиотеки между оболочкой и службой должны находиться в папке C: \ Program Files \ Microsoft Office \ Office12 (рядом с msaccess.exe).

Пока я использовал метод AssemblyResolve для предоставления библиотек во время выполнения, это не сработало ... Так что сейчас мне просто нужно скопировать библиотеки в папку - далеко не элегантное решение, но в по крайней мере, связь работает на данный момент.

0 голосов
/ 01 апреля 2010

Раньше я делал нечто похожее с Microsoft Message Queuing . Оба языка / платформы могут читать / писать в очередь.

В моем сценарии у нас была устаревшая база данных Access, которую мы должны были поддерживать. Мы хотели отойти от него и заменить его более надежным решением .NET. Чтобы получить данные в реальном времени из текущей системы в новую систему, мы добавили код VBA для записи данных в очередь сообщений. Затем мы написали службу Windows на C # для обработки этих данных в новой системе.

Я не совсем уверен в том, что ты делаешь, так что это может не подходить, но я решил упомянуть об этом.

...