PythonでWord文書のフォント形式を変更する

文字フォントの変更は、Word文書を編集および美化する際の一般的なニーズです。適切なフォントを使用することで、文書の全体的な視覚効果を向上させ、重要な情報を強調することができます。しかし、すべての文字のフォントを手動で変更するのは、手間がかかり時間がかかります。そのため、Word文書内の文字フォントを効率的に自動で変更する方法を習得することが重要です。本記事では、**Pythonコードを使用してWord文書のフォントを変更する方法**を紹介し、一括操作と自動化を実現します。

- **[PythonでWord文書の段落全体のフォントを変更](#pythonでword文書の段落全体のフォントを変更)**
- **[PythonでWord文書内の特定のテキストのフォントを変更](#pythonでword文書内の特定のテキストのフォントを変更)**

この記事で紹介する方法は、[Spire.Doc for Python](https://jp.e-iceblue.com/download/spire-doc-for-python.html)を使用します。PyPIで入手可能です：`pip install Spire.Doc`。

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

## PythonでWord文書の段落全体のフォントを変更
Word文書内の段落のスタイルは`ParagraphStyle`オブジェクトとして取得でき、そこには段落の書式やフォント設定などの情報が含まれています。このスタイルを利用して、新しいスタイルを作成し、フォント設定とスタイル名を変更した上で、この新しいスタイルを段落に適用します。これにより、他の書式を変更せずに段落のフォント設定を変更できます。
以下は操作手順の例です：
1. 必要なモジュールをインポートします。
2. `Document`インスタンスを作成し、`Document.LoadFromFile()`メソッドを使用してWord文書を読み込みます。
3. `Document.Sections.get_Item().Paragraphs.get_Item()`メソッドを使用して、文書内の段落を取得します。
4. `Document.Styles.FindByName(Paragraph.StyleName)`メソッドを使用して、この段落のスタイルオブジェクトを取得します。
5. `Style.Clone()`メソッドを使用して取得した段落スタイルに基づいて新しい段落スタイルを作成します。
6. `IStyle.Name`プロパティを使用して段落スタイルの名前を設定します。
7. `IStyle.CharacterFormat`下のプロパティを使用して段落のフォント設定を行います。
8. `Document.Styles.Add()`メソッドを使用して、新しい段落スタイルを文書に追加します。
9. `Paragraph.ApplyStyle()`メソッドを使用して、新しい段落スタイルをその段落に適用します。
10. `Document.SaveToFile()`メソッドを使用して文書を保存します。
11. リソースを解放します。

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

# ドキュメントのインスタンスを作成
doc = Document()

# Word ドキュメントを読み込む
doc.LoadFromFile("G:/Documents/Sample16.docx")

# 2 番目の段落を取得
para = doc.Sections.get_Item(0).Paragraphs.get_Item(1)

# 2 番目の段落のスタイルを取得
style = doc.Styles.FindByName(para.StyleName)

# 2 番目の段落スタイルに基づいて新しいスタイルを作成
newStyle = style.Clone()

# 新しい段落スタイルの名前を設定
newStyle.Name = "NewStyle"

# 新しい段落スタイルのフォントを設定
newStyle.CharacterFormat.FontName = "Yu Mincho"
newStyle.CharacterFormat.FontSize = 14
newStyle.CharacterFormat.TextColor = Color.get_Red()
newStyle.CharacterFormat.Bold = True
newStyle.CharacterFormat.Italic = True

# ドキュメントに新しい段落スタイルを追加
doc.Styles.Add(newStyle)

# 2 番目の段落のスタイルを設定
para.ApplyStyle(newStyle.Name)

# ドキュメントを保存
doc.SaveToFile("output/ChangeWordParagraphFont.docx")
doc.Close()
```

結果
![PythonでWord文書の段落全体のフォントを変更](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/85cd9f5a-9f92-4cdb-0567-827dd6016766.png)

## PythonでWord文書内の特定のテキストのフォントを変更
特定のテキストのフォントを変更するには、まず文書内でそのテキストを見つけ、その後、異なるフォント設定を行います。具体的な手順は次のとおりです。
1. 必要なモジュールをインポートします。
2. `Document`インスタンスを作成します。
3. `Document.LoadFromFile()`メソッドを使用してWord文書を読み込みます。
4. `Document.FindAllString()`メソッドを使用して、フォントを変更するテキストを検索します。
5. 検索結果に対してループを実行し、`TextSelection.GetAsOneRange().CharacterFormat`オブジェクトのプロパティを使用して、各一致するテキストのフォント設定を変更します。
6. `Document.SaveToFile()`メソッドを使用して文書を保存します。
7. リソースを解放します。

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

# ドキュメントのインスタンスを作成
document = Document()

# Word ドキュメントを読み込む
document.LoadFromFile('G:/Documents/Sample16.docx')

# フォントを変更したいテキストを検索
textSelections = document.FindAllString('クラウドサーバー', False, True)

# テキストのフォントスタイルを変更
for selection in textSelections:
    selection.GetAsOneRange().CharacterFormat.TextColor = Color.get_Red()
    selection.GetAsOneRange().CharacterFormat.Bold = True
    selection.GetAsOneRange().CharacterFormat.Italic = True

# 結果のドキュメントを保存
document.SaveToFile('output/ChangeWordTextFont.docx', FileFormat.Docx)
document.Close()
```

結果
![PythonでWord文書内の特定のテキストのフォントを変更](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/faf1ab88-5bcf-5ccb-7190-bc89c5bcdd75.png)

本記事では、Pythonを使用してWord文書内の段落や特定のテキストのフォント設定を変更する方法を紹介しました。

より多くの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)をご覧ください。