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

VBA (Visual Basic для приложений) — это язык программирования, который используется в файлах 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 для .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 с помощью С#

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 с помощью С#

Вы также можете изменить существующие макросы 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 для .NET бесплатно, используя временную лицензию, действительную в течение 30 дней. Получи свой сейчас.

Вывод

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

Смотрите также

Совет: вы можете попробовать Aspose БЕСПЛАТНОЕ веб-приложение для удаления макросов.