Робота з макросом VBA в C#

VBA(Visual Basic for Applications) — це мова програмування, яка використовується у файлах MS Excel для автоматизації операцій, пов’язаних з електронними таблицями. Макроси VBA використовуються для написання визначених користувачем функцій, які дозволяють прискорити виконання завдань, які потрібно виконувати вручну. У цій статті ви дізнаєтеся, як програмно працювати з макросами VBA у файлах MS Excel. До кінця цієї статті ви зможете видобувати, додавати та змінювати макроси VBA в книгах Excel за допомогою C#.

Робота з макросами VBA у файлах Excel - C# API

Aspose.Cells for .NET — це бібліотека класів C#, призначена для автоматизації роботи з електронними таблицями в програмах .NET. API надає широкий спектр функцій, які дають змогу створювати, змінювати та перетворювати робочі книги MS Excel. Крім того, API дає змогу безперешкодно працювати з макросами VBA. Aspose.Cells for .NET доступний для завантаження як файл DLL, а також розміщений на NuGet.

PM> Install-Package Aspose.Cells

Видобуток макросів VBA з файлу Excel за допомогою C#

Давайте почнемо з вилучення макросів VBA з наявної книги Excel. Нижче наведено кроки для виконання цієї операції.

  • Створіть об’єкт класу Workbook для завантаження файлу Excel.
  • Доступ до кожного модуля VBA з колекції Workbook.VbaProject.Modules в об’єкті VbaModule.
  • Отримайте код із кожного модуля за допомогою властивості VbaModule.Codes.

У наведеному нижче прикладі коду показано, як отримати макрос VBA з книги Excel за допомогою C#.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Створіть об’єкт робочої книги з вихідного файлу Excel
Workbook workbook = new Workbook("sample.xlsm");

// Витягніть код з кожного модуля VBA
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;
    Console.Write(code);
}

Додайте макроси VBA до файлу Excel за допомогою C#

Aspose.Cells for .NET також дозволяє додавати макроси VBA до існуючих або нових файлів Excel. Це можна зробити, виконавши наведені нижче дії.

  • Створіть новий файл Excel або завантажте наявний за допомогою класу Workbook.
  • Додайте новий аркуш або отримайте наявний за допомогою класу Worksheet.
  • Додайте новий модуль VBA за допомогою методу Workbook.VbaProject.Modules.Add(Worksheet) і отримайте ідентифікатор модуля.
  • Доступ до модуля VBA з колекції Workbook.VbaProject.Modules[idx] в об’єкт VbaModule.
  • Додайте назву модуля за допомогою властивості VbaModule.Name.
  • Додайте код до модуля за допомогою властивості VbaModule.Codes.
  • Збережіть книгу за допомогою методу Workbook.Save(String, SaveFormat.Xlsm).

У наведеному нижче прикладі коду показано, як додати макрос VBA до книги Excel за допомогою C#.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Створіть нову книгу
Workbook workbook = new Workbook();

// Доступ до першого аркуша
Worksheet worksheet = workbook.Worksheets[0];

// Додайте модуль VBA
int idx = workbook.VbaProject.Modules.Add(worksheet);

// Отримайте доступ до модуля VBA, установіть його назву та коди
Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx];
module.Name = "TestModule";

module.Codes = "Sub ShowMessage()" + "\r\n" +
"    MsgBox \"Welcome to Aspose!\"" + "\r\n" +
"End Sub";

// Збережіть робочу книгу
workbook.Save("output_out.xlsm", SaveFormat.Xlsm);

Змініть макрос VBA у файлі Excel за допомогою C#

Ви також можете змінити наявні макроси VBA у файлі Excel, виконавши такі дії.

  • Використовуйте клас Workbook, щоб завантажити файл Excel.
  • Доступ до модулів VBA з колекції Workbook.VbaProject.Modules в об’єкті VbaModule.
  • Отримайте код із потрібного модуля за допомогою властивості VbaModule.Codes.
  • Замініть код і збережіть файл Excel за допомогою методу Workbook.Save(String).

У наведеному нижче прикладі коду показано, як змінити макрос VBA у файлі Excel за допомогою C#.

// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Створіть об’єкт робочої книги з вихідного файлу Excel
Workbook workbook = new Workbook("sample.xlsm");

// Змініть код модуля VBA
foreach (VbaModule module in workbook.VbaProject.Modules)
{
    string code = module.Codes;

    // Замініть оригінальне повідомлення зміненим повідомленням
    if (code.Contains("This is test message."))
    {
        code = code.Replace("This is test message.", "This is Aspose.Cells message.");
        module.Codes = code;
    }
}

// Збережіть вихідний файл Excel
workbook.Save("output_out.xlsm");

Отримайте безкоштовну ліцензію

Ви можете безкоштовно використовувати або оцінювати Aspose.Cells for .NET, використовуючи тимчасову ліцензію, дійсну протягом 30 днів. Отримайте свій зараз.

Висновок

Макроси VBA у файлах MS Excel використовуються для автоматизації різних типів завдань, пов’язаних з електронними таблицями. Для програмної обробки макросів VBA у цій статті описано, як видобувати, додавати та змінювати код у модулях VBA за допомогою C#. Ви можете дізнатися більше про API обробки електронних таблиць C# за допомогою документації.

Дивись також

Порада. Ви можете перевірити Aspose БЕЗКОШТОВНА веб-програма для видалення макросів.