チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル»Java»Spire.XLS for Java»文書操作»Java:Excel ワークブックを結合または分割する方法
2026-11-09

Python で PowerPoint の文字列を置換する方法:個別置換・一括置換・正規表現

PowerPoint の文字列を置換する方法

PowerPoint の提案書や社内報告書を更新するとき、同じ製品名やステータスを何度も修正することがあります。数か所なら手作業でも対応できますが、スライドが増えると、置換漏れや表記の不統一が起こりやすくなります。

Python で文字列の置換を自動化すれば、決まったルールに従って資料を更新できます。例えば、承認状況を変更したり、資料全体の製品名を統一したり、日付形式に一致する文字列をまとめて書き換えたりできます。

この記事では、Spire.Presentation for Python を使って、次の3種類の置換処理を紹介します。

これらの処理には、それぞれ ReplaceFirstText()、ReplaceAllText()、ReplaceTextWithRegex() を使用します。

1. 環境の準備

Spire.Presentation for Python は、PowerPoint ファイルの作成、編集、変換などを行うためのライブラリです。この記事では、既存の PPTX ファイルを読み込み、文字列を置換して別のファイルに保存します。

次のコマンドでインストールします。

pip install Spire.Presentation

または、Spire.Presentation for Python のダウンロードページ から手動でライブラリをインストールすることもできます。

サンプル資料について

サンプルの は、架空の「あおば商事株式会社」が作成した業務改善提案です。営業部門の課題や担当者、導入スケジュールなど、実際の社内資料に近い内容を収録しています。

スライド 内容 置換に使用する文字列
1 営業部の業務改善提案 「確認待ち」が2か所、作成日
2 提案の背景と現状 「営業支援ツール」が2か所
3 改善施策と担当 「営業支援ツール」が2か所
4 導入スケジュール 日本語形式の日付が3か所
5 期待効果と次回の確認事項 製品名、次回会議の日付、承認状況

ファイルを Python スクリプトと同じフォルダーに配置してください。別の場所に保存する場合は、コード内の入力パスを変更します。

各サンプルは独立して実行します。 すべて同じ元ファイルを読み込むため、前の置換結果が次のサンプルに影響することはありません。

2. 指定したスライドで最初の文字列を置換する

まず、表紙にある「確認待ち」を1か所だけ「承認済み」に変更します。

ReplaceFirstText() は、呼び出したスライド内で最初に一致した文字列を置換するメソッドです。引数には、検索文字列、置換後の文字列、大文字・小文字を区別するかどうかを指定します。

サンプルの表紙には「確認待ち」が2か所あります。この違いを利用すると、最初の一致だけが置換されることを確認できます。

Python コード

from spire.presentation import *

# 入出力ファイル
input_path = "input.pptx"
output_path = "output.pptx"

# PowerPoint ファイルを読み込む
ppt = Presentation()
ppt.LoadFromFile(input_path)

# 最初のスライドを取得する
slide = ppt.Slides[0]

# このスライド内で最初に一致した文字列だけを置換する
slide.ReplaceFirstText("確認待ち", "承認済み", False)

# 別のファイルとして保存する
ppt.SaveToFile(output_path, FileFormat.Pptx2013)
ppt.Dispose()

置換結果

指定したスライドで最初の文字列を置換する

3. すべてのスライドで文字列を一括置換する

次に、資料全体の「営業支援ツール」を「営業管理システム」に変更します。製品名の変更や、古い用語を新しい表記に統一するときに使える方法です。

ReplaceAllText() は、対象スライド内の一致する文字列をすべて置換します。資料全体を更新するには、すべてのスライドに対してこのメソッドを呼び出します。

Python コード

from spire.presentation import *

# 入出力ファイル
input_path = "input.pptx"
output_path = "output.pptx"

# 置換する文字列
old_text = "営業支援ツール"
new_text = "営業管理システム"

# PowerPoint ファイルを読み込む
ppt = Presentation()
ppt.LoadFromFile(input_path)

# すべてのスライドで一致する文字列を置換する
for slide in ppt.Slides:
    slide.ReplaceAllText(old_text, new_text, False)

# 結果を保存する
ppt.SaveToFile(output_path, FileFormat.Pptx2013)
ppt.Dispose()

置換結果

すべてのスライドで文字列を一括置換する

4. 正規表現で日付をまとめて置換する

完全に同じ文字列を探す方法では、日付のように値が異なる文字列を一度に指定できません。

例えば、次の3つの日付は内容が異なりますが、いずれも「年・月・日」という共通の形式を持っています。

2026年11月12日
2026年11月19日
2026年12月3日

このような場合は、正規表現を使います。ReplaceTextWithRegex() に検索パターンを渡すと、パターンに一致する文字列を置換できます。公式サンプルと同様に、各スライドの図形を順に処理します。

ここでは、資料中の日本語形式の日付を「日程調整中」に変更します。

Python コード

from spire.presentation import *

# 入出力ファイル
input_path = "input.pptx"
output_path = "output.pptx"

# 「2026年11月12日」などに一致するパターン
pattern = Regex(r"[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日")
replacement = "日程調整中"

# PowerPoint ファイルを読み込む
ppt = Presentation()
ppt.LoadFromFile(input_path)

# 各スライドの図形を処理する
for slide in ppt.Slides:
    for shape in slide.Shapes:
        shape.ReplaceTextWithRegex(pattern, replacement)

# 結果を保存する
ppt.SaveToFile(output_path, FileFormat.Pptx2013)
ppt.Dispose()

正規表現の意味

パターン 意味
[0-9]{4} 半角数字4文字
年 文字「年」
[0-9]{1,2} 半角数字1〜2文字
月 文字「月」
[0-9]{1,2} 半角数字1〜2文字
日 文字「日」

このパターンは日付の表記形式を検索します。実在する日付かどうかを検証するものではありません。また、「2026/11/12」や全角数字の日付は対象になりません。

置換結果

正規表現で日付をまとめて置換する

今回のコードは全スライドを処理するため、表紙の作成日と次回会議の日付も置換対象になります。サンプル資料では、合計5か所の日付が該当します。

導入スケジュールだけを変更したい場合は、外側のループを使わず、4枚目のスライドを指定します。

# 4枚目のスライドだけを処理する
slide = ppt.Slides[3]
for shape in slide.Shapes:
    shape.ReplaceTextWithRegex(pattern, replacement)

5. 置換後に確認したいポイント

置換処理が完了したら、文字列だけでなくレイアウトも確認します。置換後の文字数が増えると、改行位置が変わったり、テキストボックスから文字がはみ出したりする可能性があります。

また、この記事のサンプルは、通常のテキストボックスに入力された文字を対象としています。画像内の文字には別途 OCR などの処理が必要です。グループ化された図形や、表、グラフ、SmartArt、ノート、マスターなどを含む資料では、このコードだけですべてを処理できると想定せず、対象ごとに結果を確認してください。

評価版を利用している場合、出力に評価メッセージが付くなどの制限があります。公式サイトでは、評価用の一時ライセンスを案内しています。

よくある質問

各スライドの最初の一致を置換できますか?

はい。すべてのスライドに対して ReplaceFirstText() を呼び出します。この場合、資料全体で1か所ではなく、各スライドで最大1か所ずつ置換します。

for slide in ppt.Slides:
    slide.ReplaceFirstText("確認待ち", "承認済み", False)

日本語の検索にも大文字・小文字の設定が必要ですか?

メソッドの引数として指定しますが、日本語の漢字やひらがな、カタカナには英字のような大文字・小文字の区別がありません。検索文字列に英字が含まれる場合に、この設定が関係します。

正規表現を使えば、日付を別の形式に変換できますか?

今回のサンプルでは、すべての一致を同じ固定文字列に置換しています。元の日付の年・月・日を保持して別形式に変換する処理については、キャプチャグループと置換構文の対応を確認したうえで実装する必要があります。

まとめ

Spire.Presentation for Python では、置換したい範囲と検索条件に応じてメソッドを選びます。

目的 使用するメソッド 処理範囲の指定
スライド内の最初の一致を変更する ReplaceFirstText() 対象スライドを指定
同じ文字列をまとめて変更する ReplaceAllText() 全スライドをループ
日付など共通形式の文字列を変更する ReplaceTextWithRegex() 対象スライドの図形をループ

まずはサンプル資料で各処理の違いを確認し、その後、実際の資料に合わせて検索文字列と処理範囲を調整してください。

無料トライアルライセンスの取得

Spire.Presentation for Python の機能を評価制限なしで体験したい場合は、30 日間無料トライアルライセンス を申請できます。

Read 8 times