![Как экспортировать несколько объектов Access Class в текст из Microsoft Visual Basic for Applications одновременно](https://rvso.com/image/1366185/%D0%9A%D0%B0%D0%BA%20%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2%20Access%20Class%20%D0%B2%20%D1%82%D0%B5%D0%BA%D1%81%D1%82%20%D0%B8%D0%B7%20Microsoft%20Visual%20Basic%20for%20Applications%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE.png)
У меня есть много файлов доступа, в которых есть процедуры событий Code Behind, определенные с помощью VBA. Я хочу выполнить поиск в этом коде большого количества строк.
Это можно сделать, выбрав объект класса Access в Microsoft Visual Basic для приложений, щелкнув правой кнопкой мыши и выбрав «Экспорт файла...», а затем запустив findstr
, но я могу экспортировать только один объект класса за раз (это занимает очень много времени).
Есть ли способ экспортировать несколько объектов класса доступа одновременно или написать для этого скрипт?
решение1
Итак, я создал приложение, которое экспортирует все определения форм для файла доступа. Это включает в себя код позади, поэтому с помощью следующего кода и скрипта для извлечения только раздела CodeBehind вы можете получить работоспособное решение.
using Microsoft.Office.Interop.Access;
using System;
namespace AccessExporter
{
class Program
{
static void Main(string[] args)
{
ApplicationClass app = new ApplicationClass();
String fileName = @"C:\AccessFile.accdb";
app.Visible = false;
app.OpenCurrentDatabase(fileName);
foreach (AccessObject obj in app.CurrentProject.AllForms)
{
Console.WriteLine(obj.Name);
app.SaveAsText(AcObjectType.acForm, obj.Name, String.Format(@"C:\{0}.txt", obj.Name));
}
app.CloseCurrentDatabase();
}
}
}