Можно ли конвертировать VBA в С#?

У меня есть несколько модулей блока кода в VBA для работы в нескольких базах доступа. Я хотел бы знать, как я должен продолжить, если я хочу преобразовать кодирование в среду С#. И можно ли реализовать и получить те же результаты, что и сейчас, с Access и VBA?   Я совершенно не знаком с С# на этом этапе.

Ответ 1

Автоматическое преобразование невозможно в настоящий момент, но выполнение этого вручную также поможет улучшить ваши навыки на С#. Здесь есть статья из 10-ти статей, в которой вы найдете общие отличия:

http://msdn.microsoft.com/en-us/library/aa164018%28office.10%29.aspx

Вы также можете найти следующие полезные ссылки:

Страница MSDN для разработки решений Office с С#:

http://msdn.microsoft.com/en-us/library/ms228286.aspx

Страница разработки приложений MSDN Visual С# (для начала разработки С#):

http://msdn.microsoft.com/en-us/library/aezdt881.aspx

Удачи, и я надеюсь, что это поможет.

Ответ 2

Одна вещь, о которой нужно знать, это то, что некоторые пространства имен объектов и ссылки на библиотеки включаются автоматически, когда вы кодируете в VBA. Они должны быть явно добавлены при работе на С#. Например,

Selection.TypeText("foo")

в VBA становится

using Microsoft.Office.Interop.Word;

Application word = new Application();
word.Selection.TypeText("foo");

в С#. Ссылки библиотек можно добавить, щелкнув правой кнопкой мыши папку "Ссылки" в обозревателе решений и выбрав "Добавить ссылку".

Ответ 3

Вы можете найти полезную информацию об этой точной теме в msdn здесь

Ответ 4

Как правило, вы должны иметь возможность конвертировать код вручную. Вы не найдете автоматических конвертеров кода, которые это сделают.

При этом рамки, которые вы используете для доступа к данным, в разных мирах С# и VBA весьма различны (они даже сильно отличаются между VB.NET и VBA!). Так что вы захотите прочитать ADO.NET, прежде чем приступить к работе.

Ответ 6

Учитывая, что VBA очень похож на vb.net, я бы предложил вам перейти на VB.net. Фактически вы можете часто вырезать + вставлять код, особенно если такой код из модуля кода. Если ваш код имеет DAO.Recordsets, то я предлагаю создать класс на VB.net, который "имитирует" dao.recordset. Таким образом, большинство VBA-кода могут около 100% переходить в модуль кода vb.net. Таким образом, это говорит о том, что вам не нужна конверсия, но просто переместите код VBA на VB.net. Фактически 99% команд в VBA существуют с синтаксисом SAME в VB.net.