PythonでPowerPointファイルのテキストを検索・置換する方法

プレゼンテーションはビジネス会議、学術発表、教育研修において欠かせない存在となっています。特にPowerPointプレゼンテーションは、業界標準のツールとして多くの創造的なアイデアや情報を伝える手段です。しかし、ブランドガイドラインの更新、最新データの反映、または単にプレゼンテーション効果を向上させるために、多くのスライド内で特定のテキストを置換する必要が生じることがあります。手動でこの作業を行うのは時間がかかり、特に数百枚のスライドを扱う場合にはミスも発生しやすくなります。そこで、Pythonを使用してテキストの置換を自動化することで、効率的かつ正確に作業を行うことができます。本記事では、**Pythonを使用してPowerPointプレゼンテーション内のテキストを正確に検索・置換する方法**について、通常の検索・置換方法と正規表現を使用した検索・置換方法の両方を紹介し、プレゼンテーション管理を効率化する方法を説明します。

- **[Pythonを使ってPPTXファイル内のテキストを検索し、全ての結果を置換する方法](#pythonを使ってpptxファイル内のテキストを検索し全ての結果を置換する方法)**
- **[Pythonを使って正規表現でPowerPointファイル内のテキストを置換する方法](#pythonを使って正規表現でpowerpointファイル内のテキストを置換する方法)**

本記事で使用する方法では、[Spire.Presentation for Python](https://jp.e-iceblue.com/introduce/spire-presentation-for-python.html)を使用します。PyPIからインストール可能です：`pip install Spire.Presentation`。

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

## Pythonを使ってPPTXファイル内のテキストを検索し、全ての結果を置換する方法
PowerPointプレゼンテーション内の全てのスライドをループし、ISlide.ReplaceFirstText()メソッドを使用して、特定のテキストの全ての一致項目をそのスライド内で置換します。英語のテキストの場合、大文字小文字を無視するかどうかも設定できます。
以下が操作手順です：
1. `Presentation`と`FileFormat`モジュールをインポートします。
2. `Presentation`オブジェクトを作成します。
3. `Presentation.LoadFromFile()`メソッドを使用してPowerPointプレゼンテーションを読み込みます。
4. プレゼンテーション内の全てのスライドをループします：
    - `ISlide.ReplaceAllText()`メソッドを使用して、特定のテキストの全ての一致項目を新しいテキストに置換します。
5. `Presentation.SaveToFile()`メソッドを使用して結果ファイルを保存します。
6. リソースを解放します。

**コード例**
```python
from spire.presentation import Presentation, FileFormat

# Presentationオブジェクトのインスタンスを作成する
presentation = Presentation()

# PowerPointファイルを読み込む
presentation.LoadFromFile("Sample.pptx")

# プレゼンテーション内のすべてのスライドをループする
for slide in presentation.Slides:
    # スライド内の指定されたすべてのテキストインスタンスを置換する
    slide.ReplaceAllText("地球温暖化", "気候変動", False)

# プレゼンテーションを保存する
presentation.SaveToFile("output/スライドのテキストを置換.pptx", FileFormat.Pptx2019)
# リソースを解放する
presentation.Dispose()
```

置換結果
![PythonでPowerPointファイルのテキストを置き換える](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/009668b6-a84a-69e7-d9cb-8ad4bad732e1.png)

## Pythonを使って正規表現でPowerPointファイル内のテキストを置換する方法
`IShape.ReplaceTextWithRegex()`メソッドを使用して、正規表現パターンに一致するテキストを置換します。全てのスライドおよびスライド内の全ての形状をループし、このメソッドを使用して置換を行います。
操作手順は以下の通りです：
1. `Presentation`と`FileFormat`モジュールをインポートします。
2. `Presentation`オブジェクトを作成します。
3. `Presentation.LoadFromFile()`メソッドを使用してPowerPointプレゼンテーションを読み込みます。
4. プレゼンテーション内の全てのスライドおよびスライド内の全ての形状をループします：
    - `IShape.ReplaceTextWithRegex()`メソッドを使用して、正規表現に一致するテキストを置換します。
5. `Presentation.SaveToFile()`メソッドを使用して結果ファイルを保存します。
6. リソースを解放します。

**コード例**
```python
from spire.presentation import Presentation, FileFormat, Regex

# Presentationオブジェクトのインスタンスを作成する
presentation = Presentation()

# PowerPointファイルを読み込む
presentation.LoadFromFile("Sample.pptx")

# プレゼンテーション内のすべてのスライドをループする
for slide in presentation.Slides:
    # スライド内のシェイプをループする
    for shape in slide.Shapes:
        # 正規表現を使ってシェイプ内の一致するテキストを置換する
        shape.ReplaceTextWithRegex(Regex("#\w+"), "モニター")

# プレゼンテーションを保存する
presentation.SaveToFile("output/正規表現でスライドのテキストを置換.pptx", FileFormat.Pptx2019)
# リソースを解放する
presentation.Dispose()
```

置換結果
![Pythonを使ってPowerPointファイルのテキストを正規表現で置き換える](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/aaae47c0-1964-a061-e3bb-2e2434aad601.png)

本記事では、Pythonを使用してPowerPointプレゼンテーション内の特定テキストを検索・置換する方法について、通常の置換方法と正規表現を使用した置換方法の両方を紹介しました。
より多くのPowerPointプレゼンテーション処理のテクニックについては、[Spire.Presentation for Pythonのチュートリアル](https://www.e-iceblue.com/Tutorials/Python/Spire.Presentation-for-Python/Program-Guide/Spire.Presentation-for-Python-Program-Guide-Content.html)をご覧ください。