PythonでWord文書に差し込み印刷フィールドを作成し、差し込み印刷を実行する方法

差し込み印刷(メールマージ)は、多数の受信者に対して個別に作成された文書を効率的に作成することができる強力なツールです。差し込み印刷を使用することで、テンプレート文書とデータソースを自動的にマージすることができ、それによって受信者ごとに個別に調整されたパーソナライズされた、プロフェッショナルな見た目の文書が効率的に作成できます。これは、パーソナライズされたメールの送信、請求書の生成、カスタマイズされたマーケティング資料の作成などのタスクに特に役立ちます。この記事では、Pythonコードを使用して**Word文書で差し込み印刷を作成および実行する方法**を示しています。

- **[PythonでWord文書に差し込み印刷フィールドを作成する](#pythonでword文書に差し込み印刷フィールドを作成する)**
- **[PythonでWord文書の差し込み印刷を実行する](#pythonでword文書の差し込み印刷を実行する)**

この記事で使用する方法には、[Spire.Doc for Python](https://www.e-iceblue.com/Download/Spire-Doc-Python.html)が必要です。これは公式ウェブサイトからダウンロードするか、PyPI経由でインストールできます： `pip install Spire.Doc`。

**[無料ライセンスの申請](https://www.e-iceblue.com/TemLicense.html)**

## PythonでWord文書に差し込み印刷フィールドを作成する
Word文書での差し込み印刷は、差し込み印刷フィールドの利用に関わります。**Paragraph.AppendField(str:fieldName,FieldType.FieldMergeField)** メソッドを使用すると、ユーザーは効率的に文書の指定された段落内に差し込み印刷フィールドを作成することができます。この機能により、ユーザーは後段階で個別の受信者に合わせた一連の文書を簡単に生成することができます。個別の情報を迅速に入力することで、特定の受信者に合わせた文書を容易に作成することができます。
Word文書での差し込み印刷フィールドの作成手順は以下の通りです：
- **Document** クラスのオブジェクトを作成し、**Document.LoadFromFile()** メソッドを使用してWord文書を読み込みます。
- **Document.Sections.get_Item()** メソッドを使用してセクションを取得します。
- **Section.Paragraphs.get_Item()** メソッドを使用して、差し込み印刷フィールドを挿入する段落を取得します。
- **Paragraph.AppendField()** メソッドを使用して、段落に差し込み印刷フィールドを追加します。
- **Document.SaveToFile()** メソッドを使用して文書を保存します。

**コード例**
```python
from spire.doc import *
from spire.doc.common import *

# Documentクラスのオブジェクトを作成します
doc = Document()

# Word文書をロードします
doc.LoadFromFile("サンプル.docx")

# セクションを取得します
section = doc.Sections.get_Item(1)

# メールマージフィールドを追加する段落を取得します
para1 = section.Paragraphs.get_Item(0)
para2 = section.Paragraphs.get_Item(1)
para3 = section.Paragraphs.get_Item(2)
para4 = section.Paragraphs.get_Item(3)

# メールマージフィールドを追加し、フィールド名を指定します
para1.AppendField("名前", FieldType.FieldMergeField)
para2.AppendField("年齢", FieldType.FieldMergeField)
para3.AppendField("電話番号", FieldType.FieldMergeField)
para4.AppendField("会員種別", FieldType.FieldMergeField)

# 文書を保存します
doc.SaveToFile("output/差し込み印刷フィールド.docx", FileFormat.Docx)
doc.Close()
```

**結果文書**
![PythonでWord文書に差し込み印刷フィールドを作成](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f74d6ed7-6701-173d-83c5-f8f94baa4d89.png)

## PythonでWord文書の差し込み印刷を実行する
差し込み印刷が作成された後は、**MailMerge.Execute(List: fieldNames, List: dataSource)** メソッドを使用して文書内で差し込み印刷を実行することができます。これにより、指定されたデータソースに基づいてユニークな内容を含む複数のWord文書を迅速に生成することができます。
差し込み印刷を実行し、パーソナライズされた文書を生成するための詳細な手順は以下の通りです：
- **Documentクラスのオブジェクトを作成し、**Document.LoadFromFile()** メソッドを使用してWord文書を読み込みます。
- **Document.MailMerge.GetMergeFieldNames()** メソッドを使用して、差し込み印刷フィールド名をリストとして取得します。
- データソースをループ処理します：
    - **Document.MailMerge.Execute()** メソッドを使用して、指定されたデータで差し込み印刷を実行します。
    - **Document.SaveToFile()** メソッドを使用して文書を保存します。

**コード例**
```python
from spire.doc import *
from spire.doc.common import *

# Documentクラスのインスタンスを作成します
doc = Document()

# メールマージフィールドを含むWord文書をロードします
doc.LoadFromFile("output/差し込み印刷フィールド.docx")

# メールマージフィールドの名前を取得します
fieldNames = doc.MailMerge.GetMergeFieldNames()

# データソースを指定します
dataSource = member_data = [
    ["アリス・ジョンソン", "35", "+1-555-123-4567", "プレミアム"],
    ["ボブ・ウィリアムズ", "42", "+1-555-765-4321", "スタンダード"],
    ["チャーリー・ブラウン", "28", "+44-1234-567890", "ベーシック"],
]

# データソースをループします
for i in range(len(dataSource)):
    # メールマージを実行します
    doc.MailMerge.Execute(fieldNames, dataSource[i])
    # 文書を保存します
    doc.SaveToFile(f"output/会員/会員-{dataSource[i][0]}.docx")
doc.Close()
```

**結果文書**
![PythonでWord文書の差し込み印刷を実行](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/c53f9668-5c1c-6e7b-3577-d28b88418477.png)

この記事では、PythonプログラムでWord文書に差し込みフィールドを作成し、差し込みを実行する方法を紹介します。

PythonでWord文書を処理する方法については、[Spire.Doc for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.Doc-for-Python/Program-Guide/Spire.Doc-for-Python-Program-Guide-Content.html)をご覧ください。

問題が発生した場合は、[Spire.Docフォーラム](https://www.e-iceblue.com/forum/spire-doc-f6.html)で技術サポートを受けてください。