У меня есть несколько модулей блока кода в VBA для работы в нескольких базах доступа. Я хотел бы знать, как я должен продолжить, если я хочу преобразовать кодирование в среду С#. И можно ли реализовать и получить те же результаты, что и сейчас, с Access и VBA? Я совершенно не знаком с С# на этом этапе.
Можно ли конвертировать 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, прежде чем приступить к работе.
Ответ 5
http://www.developerfusion.com/tools/convert/vb-to-csharp/
Не идеальный, но он заставит вас начать работу с sytax. Для записи это не будет сравниваться с тем, что вы узнаете сами.
Ответ 6
Учитывая, что VBA очень похож на vb.net, я бы предложил вам перейти на VB.net. Фактически вы можете часто вырезать + вставлять код, особенно если такой код из модуля кода. Если ваш код имеет DAO.Recordsets, то я предлагаю создать класс на VB.net, который "имитирует" dao.recordset. Таким образом, большинство VBA-кода могут около 100% переходить в модуль кода vb.net. Таким образом, это говорит о том, что вам не нужна конверсия, но просто переместите код VBA на VB.net. Фактически 99% команд в VBA существуют с синтаксисом SAME в VB.net.