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





Как правило, вы можете преобразовать код вручную. Вы не найдете автоматических преобразователей кода, которые бы это сделали.
При этом фреймворки, которые вы используете для доступа к данным, сильно различаются в мирах C# и VBA (они даже совсем разные между VB.NET и VBA!). Итак, вы захотите прочитать об ADO.NET, прежде чем начать.
В настоящее время автоматическое преобразование невозможно, но выполнение его вручную также поможет улучшить ваши навыки работы с C#. Здесь есть 10 лучших статей, в которых рассказывается об общих различиях:
http://msdn.microsoft.com/en-us/library/aa164018%28office.10%29.aspx
Вам также могут быть полезны следующие ссылки:
Страница MSDN для разработки решений Office на C#:
http://msdn.microsoft.com/en-us/library/ms228286.aspx
Страница разработки приложений MSDN Visual C# (для начала разработки на C#):
http://msdn.microsoft.com/en-us/library/aezdt881.aspx
Удачи, надеюсь, это поможет.
Следует помнить, что некоторые пространства имен объектов и ссылки на библиотеки включаются автоматически, когда вы пишете код на VBA. Их необходимо явно добавить при работе на C#. Например,
Selection.TypeText("foo")
в VBA становится
using Microsoft.Office.Interop.Word;
Application word = new Application();
word.Selection.TypeText("foo");
в C#. Ссылки на библиотеки можно добавить, щелкнув правой кнопкой мыши папку «Ссылки» в обозревателе решений и выбрав «Добавить ссылку».
Это встраивание Interop, я не встраиваю его, и он не работает соответственно: /
Учитывая, что VBA ОЧЕНЬ похож на vb.net, я бы посоветовал вам перейти на VB.net. На самом деле вы часто можете вырезать + вставить код, особенно если такой код взят из модуля кода. Если в вашем коде есть DAO.Recordsets, я предлагаю создать в VB.net класс, который «имитирует» dao.recordset. Таким образом, большая часть кода VBA может почти на 100% помещаться в модуль кода vb.net. Таким образом, это говорит о том, что вам не нужна конверсия, а просто переместите код VBA на VB.net. Фактически 99% команд в VBA существуют с ЖЕСТКИМ синтаксисом в VB.net.
Есть ли у вас какие-либо формы доступа в вашем MDB?