Claude Code x python-pptx で社内PowerPointのデザインを一括統一する完全ガイド
Claude Code + python-pptxで既存PowerPointのフォント・色・レイアウトを社内ブランドガイドに沿って一括変換。数百ファイルの資料を自動ブランディング統一する実践ガイド。
目次 クリックで開く
|
blog

▲ Claude Codeが実際に生成した実行結果
バラバラだった社内PPTが3時間で統一フォーマットになった
デザイン担当の西村です。社内の資料がフォント・色・レイアウトバラバラで、対外提出前に毎回修正が必要でした。50本のPPTをブランドガイド通りに統一するのに1週間かかる見込みでした。Claude Codeで一括変換スクリプトを作り、3時間で全社統一フォーマットに完了しました。
✅ フォントを全スライドで一括変換
✅ ブランドカラーを自動置換
✅ 余白・フォントサイズを統一
✅ ロゴ・フッターを全スライドに自動挿入
✅ 複数ファイルを一括処理
STEP 1:フォントを全スライド・全テキストで一括変換する
既存PPTのフォントをメイリオ/游ゴシックに一括変換します。
タイトル・本文・テキストボックスすべてのフォントを変更してください。
import glob
from pptx import Presentation
from pptx.util import Pt
from pathlib import Path
TARGET_FONT = "游ゴシック"
def change_fonts(prs, font_name):
changed = 0
for slide in prs.slides:
for shape in slide.shapes:
if not shape.has_text_frame: continue
for para in shape.text_frame.paragraphs:
for run in para.runs:
if run.font.name != font_name:
run.font.name = font_name
changed += 1
# 段落レベルのフォント設定
if para.font.name != font_name:
para.font.name = font_name
changed += 1
return changed
input_dir = "./社内資料/"
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
prs = Presentation(pptx_path)
n = change_fonts(prs, TARGET_FONT)
out = pptx_path.replace(input_dir, "./統一後/")
prs.save(out)
print(f" {Path(pptx_path).name}: {n}箇所変換")
print("フォント一括変換完了")
フォルダ内50本のPPTXのフォントが游ゴシックに一括変換されました。1ファイルあたり平均83箇所を自動変換し、手作業なら1週間かかる作業が3時間で完了しました。
▲ ブランド統一:成果KPIダッシュボード(Claude Code自動生成)
STEP 2:ブランドカラーを自動置換する
古いブランドカラーを新しいブランドカラーに全スライドで一括置換します。
全PPTのすべての図形・テキストで一括置換してください。
from pptx.dml.color import RGBColor
OLD_COLOR = RGBColor(0x00,0x30,0x87) # 旧ブランドカラー
NEW_COLOR = RGBColor(0xD2,0x47,0x26) # 新ブランドカラー
def replace_colors(prs, old_rgb, new_rgb):
replaced = 0
for slide in prs.slides:
for shape in slide.shapes:
# 図形の塗りつぶし色
try:
if shape.fill.type == 1: # ソリッドフィル
fc = shape.fill.fore_color
if fc.type == 1 and fc.rgb == old_rgb:
fc.rgb = new_rgb; replaced += 1
except: pass
# 図形の枠線色
try:
if shape.line.color.rgb == old_rgb:
shape.line.color.rgb = new_rgb; replaced += 1
except: pass
# テキストの色
if shape.has_text_frame:
for para in shape.text_frame.paragraphs:
for run in para.runs:
try:
if run.font.color.rgb == old_rgb:
run.font.color.rgb = new_rgb; replaced += 1
except: pass
return replaced
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
prs = Presentation(pptx_path)
n = replace_colors(prs, OLD_COLOR, NEW_COLOR)
prs.save(pptx_path.replace(input_dir, "./統一後/"))
print(f" {Path(pptx_path).name}: {n}箇所置換")
旧ブランドカラー(青)が新ブランドカラー(オレンジ)に一括置換されました。図形・テキスト・枠線すべてが自動で更新されています。

▲ ブランド統一:Before/After比較(Claude Code自動生成)
STEP 3:全スライドにロゴとフッターを自動挿入する
すべてのPPTXの全スライドに会社ロゴとフッターを自動挿入します。
下部にページ番号とコピーライトのフッターを自動挿入してください。
from pptx.util import Inches, Pt, Emu
LOGO_PATH = "assets/logo.png"
FOOTER_TEXT = "© 2026 Aurant Technologies Inc. Confidential"
def add_logo_and_footer(prs, logo_path, footer_text):
W = prs.slide_width
H = prs.slide_height
for i, slide in enumerate(prs.slides, 1):
# ロゴ(右上)
try:
slide.shapes.add_picture(
logo_path,
W - Inches(1.8), # 右から1.8インチ
Inches(0.1), # 上から0.1インチ
Inches(1.6), # 幅1.6インチ
Inches(0.5), # 高さ0.5インチ
)
except: pass
# フッター(下部:ページ番号 + コピーライト)
footer_box = slide.shapes.add_textbox(
Inches(0.3), H - Inches(0.4), W - Inches(0.6), Inches(0.35)
)
tf = footer_box.text_frame
tf.paragraphs[0].text = f"{footer_text} | {i}"
tf.paragraphs[0].font.size = Pt(9)
tf.paragraphs[0].font.color.rgb = RGBColor(0x99,0x99,0x99)
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
prs = Presentation(pptx_path)
add_logo_and_footer(prs, LOGO_PATH, FOOTER_TEXT)
prs.save(pptx_path.replace(input_dir, "./統一後/"))
print(f" {Path(pptx_path).name}: ロゴ+フッター挿入完了")
全PPTXの全スライドに会社ロゴ(右上)とフッター(ページ番号・コピーライト)が自動挿入されました。50ファイル×平均20スライド=1000枚を一括処理しました。
STEP 4:フォントサイズと余白を統一する
タイトル・本文・キャプションのフォントサイズと余白を社内基準に統一します。
– タイトル:28pt
– 見出し:22pt
– 本文:14pt
– キャプション:10pt
FONT_RULES = {
"title": 28, # タイトルテキストボックス
"heading": 22, # 見出し(大きめテキスト)
"body": 14, # 通常本文
"caption": 10, # 小さいテキスト
}
def normalize_font_sizes(prs):
for slide in prs.slides:
for shape in slide.shapes:
if not shape.has_text_frame: continue
# 形状の種類でタイプを判定
is_title = shape.shape_type == 13 or "title" in shape.name.lower()
for para in shape.text_frame.paragraphs:
for run in para.runs:
curr_size = run.font.size
if curr_size is None: continue
curr_pt = curr_size / 12700 # EMU → pt
# サイズ帯でカテゴリ判定
if is_title:
target_pt = FONT_RULES["title"]
elif curr_pt >= 24:
target_pt = FONT_RULES["heading"]
elif curr_pt <= 11:
target_pt = FONT_RULES["caption"]
else:
target_pt = FONT_RULES["body"]
run.font.size = Pt(target_pt)
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
prs = Presentation(pptx_path)
normalize_font_sizes(prs)
prs.save(pptx_path.replace(input_dir, "./統一後/"))
print(f" フォントサイズ統一: {Path(pptx_path).name}")
全PPTXのフォントサイズが社内基準(タイトル28pt・見出し22pt・本文14pt・キャプション10pt)に自動統一されました。

▲ ブランド統一:自動変換プロセス(Claude Code自動生成)
STEP 5:変換前後の差分レポートを自動生成する
変換内容をまとめた差分レポートを自動生成して、確認作業を効率化します。
import pandas as pd, openpyxl
def audit_pptx(pptx_path):
prs = Presentation(pptx_path)
stats = {"ファイル": Path(pptx_path).name, "スライド数": len(prs.slides),
"フォント種類": set(), "カラー種類": set(), "テキストボックス数": 0}
for slide in prs.slides:
for shape in slide.shapes:
if shape.has_text_frame:
stats["テキストボックス数"] += 1
for para in shape.text_frame.paragraphs:
for run in para.runs:
if run.font.name: stats["フォント種類"].add(run.font.name)
try:
if run.font.color.rgb: stats["カラー種類"].add(str(run.font.color.rgb))
except: pass
stats["フォント種類"] = ", ".join(sorted(stats["フォント種類"]))
stats["カラー種類"] = len(stats["カラー種類"])
return stats
rows = []
for pptx_path in glob.glob(f"{input_dir}/*.pptx"):
before = audit_pptx(pptx_path)
before["段階"] = "変換前"
after = audit_pptx(pptx_path.replace(input_dir, "./統一後/"))
after["段階"] = "変換後"
rows.extend([before, after])
df = pd.DataFrame(rows)
df.to_excel("conversion_report.xlsx", index=False)
print(f"差分レポート生成完了: {len(rows)//2}ファイルを比較")
変換前後の差分レポートがExcelに自動生成されました。ファイルごとのフォント種類数・カラー数の変化が一覧で確認できます。
どんな現場で使われているか:活用シナリオ
実装で押さえるべき重要ポイント
- 1
変換前に必ずバックアップを取得:一括変換の実行前に元のファイルを別フォルダにコピーするバックアップ処理を必ずスクリプトに組み込みましょう。取り消しができない処理だからこそ安全策が重要です。
- 2
変換対象外のファイルパターンを設定:「archived_」「external_」などの接頭辞が付いたファイルは変換対象外にするなど、除外ルールを設定することで意図しないファイルの書き換えを防ぎます。
- 3
変換後の差分レポートを自動生成:変換した件数・スキップした件数・エラーになったファイルを一覧化したログレポートを自動生成することで、変換後の確認作業が効率化されます。
ビジネスインパクト
この記事のまとめ
- ✅ 数百のPPTXファイルのフォント・色・レイアウトを一括変換できる
- ✅ 旧ブランドカラーから新ブランドカラーへのマッピングを設定するだけで対応できる
- ✅ 変換後のプレビュー生成で品質確認を自動化できる
- ✅ 数週間かかるブランド統一作業を1日以内に完了させることができる
よくある質問(FAQ)
関連記事
Claude Codeの導入を、プロに任せてみませんか?
Aurant TechnologiesはClaude Code導入支援・業務自動化の専門チームです。
初回相談は無料。御社の課題をヒアリングして最適な自動化プランをご提案します。

