запустить код VBA из приложений .net - PullRequest
2 голосов
/ 09 ноября 2010

У меня очень большой объем кода, написанного на VBA, который мне нужно перенести в приложение .Net.

Переписывать все это не практично, так как их слишком много, поэтому мне было интересно, есть ли способ вызвать эти функции vba из .NET

Спасибо.

Обновление:

Я расследовал это, и оказалось, что они не подходят. Приложение не является Microsoft Office и не предоставляет никакой функциональности макроса «Выполнить».

После сравнения файлов, созданных нашим унаследованным сторонним приложением и образцом приложения «Блокнот», форматы файлов (просматриваемые в блокноте) выглядят очень похоже (те же самые первые несколько символов, общий макет тот же), поэтому я Интересно, есть ли способ использовать функцию загрузки / сохранения этого проекта для доступа к макросам.

Я провел несколько базовых тестов, попытка просто загрузить нашу существующую vba в блокнот vba не работает. Я предполагаю, что мне нужно обновить интерфейс приложения, однако, к сожалению, кажется, что больше невозможно получить лицензионное соглашение VBA, так как Microsoft решила, что все должны использовать VSTA вместо этого - поэтому я не уверен в лучшем способе продолжить с этим.

Предполагая, что нет способа интегрировать VBA в наше новое приложение, моя единственная оставшаяся идея состоит в том, чтобы создать новую функцию VBA в унаследованном приложении, которая вызывается в точках входа application_start или period_execute, и они могут быть в состоянии установить необходимые глобальные переменные и вызов других функций, однако я все еще надеюсь на что-то более приятное.

Любые идеи приветствуются! :)

Ответы [ 3 ]

2 голосов
/ 09 ноября 2010

Я предполагаю, что ваш код VBA содержится в одном из приложений Microsoft Office.

Все приложения Microsoft Office предоставляют метод Application.Run (), который принимает имя макроса или подпроцедуры. Макрос или подпроцедура должны быть объявлены как Public.

. Вы можете использовать .Net-код для создания экземпляра соответствующего приложения Office (Word, Excel и т. Д.), А затем вызывать макрос или процедуру Sub, вызывая метод Run, передавая имя макроса / процедуры в качестве строкового аргумента. например,

objWordApp.Run("MyVBAMacro")

Метод Run также принимает ряд аргументов, которые могут содержать значения любых параметров, которые необходимо предоставить макросу или процедуре.

Эта статья MSDN содержит несколько примеров.

1 голос
/ 09 ноября 2010
0 голосов
/ 09 ноября 2010

Может быть, вы можете попытаться преобразовать код в VSTO. Некоторые сообщения об этом можно найти здесь:

http://blogs.officezealot.com/hansen/archive/2007/01/10/20048.aspx

...