Работа с макросами VBA в документах Word с использованием Python

Visual Basic для приложений (VBA) — это мощный язык программирования, который позволяет автоматизировать задачи в документах Word. Более того, вы можете легко выполнять повторяющиеся задачи с помощью макросов VBA. В этой статье вы узнаете, как работать с проектами и модулями VBA в документах MS Word. В частности, в статье будет рассказано, как программно создавать, изменять и клонировать макросы VBA в Python.

Библиотека Python для работы с макросами MS Word VBA

Для работы с макросами VBA в файлах Word мы будем использовать Aspose.Words for Python. Это мощная библиотека для создания документов Word и управления ими из приложений Python. Вы можете установить библиотеку в свое приложение из PyPI, используя следующую команду pip.

pip install aspose-words

Создайте макрос VBA в документе MS Word на Python

Ниже приведены шаги по созданию макроса VBA в файле MS Word DOCM с использованием Python.

  • Загрузите документ Word или создайте новый, используя класс Document.
  • Создайте объект класса VbaProject.
  • Задайте имя проекта, используя свойство VbaProject.name.
  • Назначьте проект свойству Document.vbaproject.
  • Создайте объект класса VbaModule.
  • Задайте имя и тип модуля, используя свойства VbaModule.name и VbaModule.type соответственно.
  • Задайте исходный код, используя свойство VbaModule.sourcecode.
  • Добавьте модуль в проект документа VBA с помощью метода Document.vbaproject.modules.add(VbaModule).
  • Сохраните документ с помощью метода Document.save().

В следующем примере кода показано, как создать макрос VBA в документе DOCM с помощью Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Create VBA project
project = aw.vba.VbaProject()
project.name = "AsposeProject"
doc.vba_project = project

# Create a new module and specify a macro source code.
module = aw.vba.VbaModule()
module.name = "AsposeModule"
module.type = aw.vba.VbaModuleType.PROCEDURAL_MODULE
module.source_code = "New source code"

# Add module to the VBA project.
doc.vba_project.modules.add(module)

# Save document.
doc.save("create_vba_project.docm")

Изменить макрос VBA в документе Word на Python

Вы также можете беспрепятственно получать доступ к существующим макросам VBA в документах Word и изменять их. Следующие шаги демонстрируют, как этого добиться с помощью Aspose.Words for Python.

  • Загрузите документ Word, используя класс Document.
  • Получите ссылку на VbaProject в объект, используя свойство Document.vbaproject.
  • Получите доступ к нужному модулю VBA, используя индекс, и обновите его исходный код, используя свойство VbaProject.modules[int].sourcecode.
  • Сохраните документ с помощью метода Document.save().

В следующем примере кода показано, как изменить существующий макрос MS Word VBA с помощью Python.

import aspose.words as aw

# Load Word document.
doc = aw.Document("document.docm")

# Get reference of VBA project.
project = doc.vba_project

# Update source code.
newSourceCode = "Test change source code"
project.modules[0].source_code = newSourceCode
    
# Save document.
doc.save("modify_vba_macros.docm")

Клонировать макрос VBA в документе Word с помощью Python

В некоторых случаях может потребоваться клонировать модуль VBA или весь проект VBA из одного документа Word в другой. Для этого Aspose.Words for Python позволяет довольно легко создавать клоны. В следующих разделах описано, как клонировать модуль VBA или проект VBA.

Клонировать модуль VBA

Ниже приведены шаги по созданию клона модуля VBA из одного документа DOCM в другой с использованием Python.

  • Загрузите исходный документ Word, используя класс Document.
  • Загрузите целевой документ Word с помощью класса Document.
  • Создайте VbaProject для целевого документа Word.
  • Получите клон модуля VBA из исходного документа Word в объект, используя метод Document.vbaproject.modules.getbyname(string).clone().
  • Добавьте клонированный модуль в целевой документ, используя метод Document.vbaproject.modules.add(VbaModule).
  • Сохраните целевой документ с помощью метода Document.save().

В следующем примере кода показано, как клонировать модуль MS Word VBA в Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")
destDoc.vba_project = aw.vba.VbaProject() 

# Clone VBA module.
copyModule = doc.vba_project.modules.get_by_name("Module1").clone()
destDoc.vba_project.modules.add(copyModule)

# Save document.
destDoc.save("clone_vba_module.docm")

Клонировать проект VBA

Ниже приведены шаги для клонирования проекта MS Word VBA в Python.

  • Загрузите исходный документ Word, используя класс Document.
  • Загрузите целевой документ Word с помощью класса Document.
  • Получите клон проекта VBA из исходного документа с помощью метода Document.vbaproject.clone() и добавьте его в целевой документ с помощью свойства Document.vbaproject.
  • Сохраните целевой документ с помощью метода Document.save().

В следующем примере кода показано, как клонировать проект VBA из одного документа Word в другой в Python.

import aspose.words as aw

# Load source Word document.
doc = aw.Document("document.docm")

# Load destination Word document.
destDoc = aw.Document("dest_document.docm")

# Clone VBA project.
destDoc.vba_project = doc.vba_project.clone() 

# Save document.
destDoc.save("clone_vba_module.docm")

Получите бесплатную лицензию API

Вы можете получить временную лицензию на использование Aspose.Words for Python без ограничений на пробную версию.

Вывод

В этой статье вы узнали, как создавать макросы VBA в документах MS Word с помощью Python. Более того, вы увидели, как изменять или клонировать существующие модули или проекты VBA программными средствами. Кроме того, вы можете изучить другие функции Aspose.Words для Python, используя документацию. Если у вас возникнут какие-либо вопросы, дайте нам знать через наш форум.

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

Информация: Если вам когда-нибудь понадобится получить документ Word из презентации PowerPoint, вы можете использовать конвертер Aspose Presentation to Word Document.