Pythonを使用してWord文書でVBAマクロを操作する

Visual Basic for Applications(VBA)は、Word文書のタスクを自動化できる強力なプログラミング言語です。さらに、VBAマクロを使用して繰り返しタスクを非常に簡単に実行できます。この記事では、MSWordドキュメントでVBAプロジェクトとモジュールを操作する方法を学習します。特に、この記事では、PythonでVBAマクロをプログラムで作成、変更、および複製する方法について説明します。

MSWordVBAマクロと連携するPythonライブラリ

WordファイルでVBAマクロを操作するには、Aspose.Words for Pythonを使用します。これは、Pythonアプリケーション内からWord文書を作成および操作するための強力なライブラリです。次のpipコマンドを使用して、PyPIからアプリケーションにライブラリをインストールできます。

pip install aspose-words

PythonのMSWordドキュメントでVBAマクロを作成する

以下は、Pythonを使用してMSWordDOCMファイルにVBAマクロを作成する手順です。

  • Word文書をロードするか、Documentクラスを使用して新しい文書を作成します。
  • VbaProjectクラスのオブジェクトを作成します。
  • VbaProject.nameプロパティを使用してプロジェクトの名前を設定します。
  • ProjectをDocument.vba_projectプロパティに割り当てます。
  • VbaModuleクラスのオブジェクトを作成します。
  • VbaModule.nameプロパティとVbaModule.typeプロパティをそれぞれ使用して、モジュールの名前とタイプを設定します。
  • VbaModule.source_codeプロパティを使用してソースコードを設定します。
  • Document.vba_project.modules.add(VbaModule)メソッドを使用して、ドキュメントのVBAプロジェクトにモジュールを追加します。
  • Document.save()メソッドを使用してドキュメントを保存します。

次のコードサンプルは、Pythonを使用してDOCMドキュメントにVBAマクロを作成する方法を示しています。

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")

PythonでWord文書のVBAマクロを変更する

Word文書の既存のVBAマクロにシームレスにアクセスして変更することもできます。次の手順は、Aspose.Words for Pythonを使用してこれを実現する方法を示しています。

  • Documentクラスを使用してWord文書をロードします。
  • Document.vba_projectプロパティを使用して、VbaProjectの参照をオブジェクトに取得します。
  • インデックスを使用して目的のVBAモジュールにアクセスし、VbaProject.modules[int].source\codeプロパティを使用してそのソースコードを更新します。
  • Document.save()メソッドを使用してドキュメントを保存します。

次のコードサンプルは、Pythonを使用して既存のMSWordVBAマクロを変更する方法を示しています。

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")

Pythonを使用してWord文書でVBAマクロのクローンを作成する

場合によっては、VBAモジュールまたはVBAプロジェクト全体を1つのWord文書から別の文書に複製する必要があります。これを実現するために、Aspose.Words for Pythonを使用すると、クローンを非常に簡単に作成できます。次のセクションでは、VBAモジュールまたはVBAプロジェクトのクローンを作成する方法について説明します。

VBAモジュールのクローンを作成する

以下は、Pythonを使用して1つのDOCMドキュメントから別のドキュメントにVBAモジュールのクローンを作成する手順です。

  • Documentクラスを使用してソースWord文書をロードします。
  • Documentクラスを使用して宛先のWord文書をロードします。
  • 宛先WordドキュメントのVbaProjectを作成します。
  • Document.vba_project.modules.get_by_name(string).clone()メソッドを使用して、ソースWordドキュメントからオブジェクトにVBAモジュールのクローンを取得します。
  • Document.vba_project.modules.add(VbaModule)メソッドを使用して、複製されたモジュールを宛先ドキュメントに追加します。
  • Document.save()メソッドを使用して宛先ドキュメントを保存します。

次のコードサンプルは、PythonでMSWordVBAモジュールのクローンを作成する方法を示しています。

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プロジェクトのクローンを作成する

以下は、PythonでMS Word VBAプロジェクトのクローンを作成する手順です。

  • Documentクラスを使用してソースWord文書をロードします。
  • Documentクラスを使用して宛先のWord文書をロードします。
  • Document.vba_project.clone()メソッドを使用してソースドキュメントからVBAプロジェクトのクローンを取得し、Document.vba_projectプロパティを使用して宛先ドキュメントに追加します。
  • Document.save()メソッドを使用して宛先ドキュメントを保存します。

次のコードサンプルは、PythonでVBAプロジェクトをあるWord文書から別のWord文書に複製する方法を示しています。

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を使用できます。

結論

この記事では、Pythonを使用してMSWordドキュメントでVBAマクロを作成する方法を学習しました。さらに、既存のVBAモジュールまたはプロジェクトをプログラムで変更または複製する方法を見てきました。さらに、ドキュメントを使用して、Aspose.Words for Pythonの他の機能を調べることができます。ご不明な点がございましたら、フォーラムからお気軽にお問い合わせください。

関連項目

情報:PowerPointプレゼンテーションからWord文書を取得する必要がある場合は、AsposeプレゼンテーションからWord文書コンバーターを使用できます。