Доступ к объекту VBA с использованием C # - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть программное обеспечение на C #, управляющее приложением.Приложение может быть вызвано через VBA.В документации сказано, что он реализован как сервер автоматизации OLE.

Когда мой код был еще 32-разрядным, я использовал Interop.MSScriptcontrol и вызывал команды VBA с помощью .ExecuteStatement().Вот пример

MSScriptControl S = new MSScriptControl.ScriptControlClass();
S.Language = "VBScript";
S.ExecuteStatement("set obj = CreateObject(\"End_Application.Application\")");
S.ExecuteStatement("set Instance = obj.NewApp");

Выполнение этих 4 строк создаст новый момент приложения, а затем я отправлю больше S.ExecuteStatements () для управления приложением.Если бы я хотел, чтобы приложение вернуло значение, я бы использовал метод S.Eval.

Теперь мне нужно перейти на 64-разрядную версию.Я нашел CodeFluent ScriptEngine класс.Я использую метод Eval(), но приложение не создает новый экземпляр.

Можете ли вы указать мне правильное использование класса ScriptEngine или как я могу вызвать объект напрямую через C #создать экземпляр и передать данные в экземпляр, т.е. повторить метод S.ExecuteCommand().

Есть ли способ исключения классов сценариев и непосредственного вызова объекта?

Заранее спасибо,

...