Claude CodeでWord文書を自動生成する方法|python-docxで契約書・報告書のひな形を整える
Word文書の作成で時間を取られるのは、中身を書く工程よりも、フォーマット崩れの修正やテンプレート管理の属人化です。契約書のひな形を更新したら別の箇所のスタイルが崩れた、報告書のヘッダーが担当者ごとに違う、といった問題は多くの現場で繰り返されています。
Claude Codeはpython-docxを使ったWord文書の生成・編集コードを自然言語で指示できるため、テンプレートへの差し込みからスタイル適用、目次・ヘッダー設定まで手作業なしで回せます。テンプレートの構造設計を先に固めれば、量産時のフォーマット崩れも大幅に減らせます。
本記事のポイント
- Claude Codeはpython-docxを使ったWord文書の生成・編集コードを自然言語で書けるため、テンプレートへの差し込み、スタイル適用、目次生成まで手作業なしで回せる。
- Word自動化の起点はテンプレートdocxの構造設計であり、スタイル名の統一とプレースホルダーの配置を先に決めると量産時の崩れが減る。
- 契約書、報告書、議事録のように定型構造がある文書ほどWord自動化の効果が高く、毎回のフォーマット調整工数を削減できる。
こんな場面で効果が出やすい
- 契約書・報告書・議事録のひな形を毎回手で整えている
- テンプレートの管理が属人化し、担当者ごとにフォーマットが違う
- 差し込み印刷では対応しきれない条件分岐やスタイル制御がある
定型構造がある文書ほど、自動化の投資対効果が高くなります。
python-docxでWord文書を操作する基本
python-docxはPythonからdocx形式のWord文書を読み書きするライブラリです。段落、表、画像、ヘッダー・フッターなど主要な要素を操作でき、Wordをインストールしなくても動作します。Claude Codeはこのライブラリのコードを自然言語の指示から生成できるため、Pythonに詳しくなくても実用的なスクリプトを得られます。
| 比較軸 | Claude Code + python-docx | 手作業 | Wordの差し込み印刷 |
|---|---|---|---|
| テンプレート管理 | docxファイルとスクリプトをrepoで管理 | 共有フォルダに最新版を置く運用 | Word上でフィールド設定 |
| 条件分岐 | Pythonコードで自由に制御 | 手で判断して書き分け | IFフィールドで一部対応 |
| スタイルの一貫性 | スタイル名を指定して適用 | 担当者のWordスキルに依存 | テンプレート側のスタイルに依存 |
| 量産性 | CSVやJSONから一括生成 | 1件ずつ手作業 | データソースから一括だが柔軟性に限界 |
| 学習コスト | 自然言語で指示できるため低い | 不要 | フィールド構文の理解が必要 |
差し込み印刷でも定型文書は作れますが、条件分岐が複雑になる、スタイルを動的に変えたい、複数テンプレートを切り替えたい、といった要件ではpython-docxの方が対応しやすくなります。
テンプレートの差し込み印刷的な使い方
python-docxでWord自動化を始めるとき、最初に決めるべきはテンプレートdocxの構造です。具体的には、プレースホルダーの記法とスタイル名の統一です。
たとえば、テンプレート内に {{company_name}} や {{contract_date}} のようなプレースホルダーを入れておき、スクリプトで置換する方法がシンプルです。Claude Codeに「このテンプレートのプレースホルダーをCSVデータで差し替えるスクリプトを書いて」と指示すれば、実用的なコードが得られます。
project/
├── templates/
│ ├── contract_template.docx
│ ├── report_template.docx
│ └── minutes_template.docx
├── data/
│ └── input.csv
├── output/
│ └── (生成されたdocxが入る)
└── generate.py
ポイントは3つあります。
- スタイル名を統一する:テンプレートdocx内の見出しは「Heading 1」「Heading 2」など標準スタイル名に揃えておく。独自スタイル名を使うと、python-docxからの指定が煩雑になる。
- プレースホルダーはrun単位で壊れないように注意する:Wordは見た目が同じテキストでも内部で複数のrunに分割することがある。プレースホルダーを入力したらテンプレートを保存し直し、run分割を確認するのが安全。
- 出力先を分けておく:生成物をoutputディレクトリに置き、テンプレートと混ぜない。
契約書・報告書・議事録への応用
定型構造がある文書ほどWord自動化の効果が高くなります。以下の3パターンは、多くの企業で繰り返し作成される文書です。
契約書
契約書は条項番号、当事者名、日付、金額など差し替え箇所が明確です。Claude Codeに「契約書テンプレートから当事者情報と金額をCSVで差し替え、条項番号を自動採番するスクリプトを書いて」と指示すると、プレースホルダー置換と段落番号の制御を含むコードが生成できます。NDA、業務委託、売買契約など類型ごとにテンプレートを分けておくと管理しやすくなります。
報告書
月次報告書や週次レポートでは、タイトル、期間、数値データ、所見の差し替えが中心です。表の行数が月ごとに変わる場合でも、python-docxで動的に行を追加できます。Claude Codeには「CSVの行数に応じてテーブル行を追加し、ヘッダースタイルを維持して」と伝えれば対応できます。
議事録
議事録は日時、参加者、議題、決定事項、次回アクションの構造がほぼ固定です。会議後にJSONやCSVで決定事項を入力し、docxに流し込む運用にすると、フォーマットのばらつきがなくなります。参加者リストが長い場合の改行処理なども、Claude Codeに指示すれば自動で対応できます。
ヘッダー・フッター・目次の自動設定
python-docxではヘッダーやフッターの操作も可能です。会社ロゴの挿入、ページ番号の設定、文書タイトルの表示などをスクリプトで制御できます。
| 設定項目 | python-docxでの対応 | 注意点 |
|---|---|---|
| ヘッダー | section.headerから段落・画像を追加 | セクションごとに異なるヘッダーを設定可能 |
| フッター | section.footerから段落を追加 | ページ番号はXMLレベルの操作が必要な場合がある |
| 目次 | TOCフィールドコードをXMLで挿入 | Wordで開いてフィールド更新が必要 |
| ページ区切り | 段落にpage breakを追加 | セクション区切りとの使い分けに注意 |
目次の自動生成はpython-docx単体では完結しません。TOCフィールドコードを挿入することはできますが、実際のページ番号の反映にはWordで文書を開いてフィールドを更新する操作が必要です。Claude Codeに「目次フィールドを先頭ページに挿入するコードを書いて」と指示すると、XMLレベルの操作を含むスクリプトが得られます。
ヘッダーに会社ロゴを入れたい場合は、画像ファイルのパスを渡せばpython-docxで挿入できます。ロゴのサイズ指定もInchesやCmで制御可能です。
人が確認する境界はここ
Word自動化で全工程を無人にするのは現実的ではありません。以下の3点は人の目で確認する前提で運用を設計してください。
- スタイルの見た目確認:python-docxはスタイル名を指定して適用しますが、そのスタイルがWord上でどう見えるかはテンプレート側の定義次第です。初回は必ずWordで開いて確認します。
- 契約書の法的内容:条項の差し替えやテンプレート選択が正しいかは、法務担当が確認すべきです。自動化はフォーマット作業の省力化であり、内容の正当性を保証するものではありません。
- 目次とページ番号:TOCフィールドを挿入しても、Wordで開いてフィールド更新するまでページ番号は反映されません。最終確認時にCtrl+Aで全選択してF9でフィールド更新する手順を運用に組み込みます。
よくある質問
既存Wordのスタイルを引き継げるか?
引き継げます。python-docxは既存のdocxファイルを読み込んで編集できるため、すでにスタイルが設定されたテンプレートをそのまま使えます。テンプレートに定義済みのスタイル名をスクリプト側で指定すれば、フォントや段落設定はテンプレートの定義が適用されます。
表や画像も挿入できるか?
どちらも対応しています。表はadd_tableで作成し、セルごとにテキストやスタイルを設定できます。画像はadd_pictureでファイルパスとサイズを指定して挿入します。グラフについてはpython-docx単体では作成できないため、matplotlibなどで画像として書き出してから挿入する方法が一般的です。
PDF変換も自動化できるか?
python-docx自体にはPDF変換機能はありませんが、LibreOfficeのコマンドライン変換やComtypes経由でのWord操作で対応できます。PDF出力の自動化については Claude CodeでPDFレポートを自動生成する方法 で詳しく整理しています。
docxとdocの違いは?
docxはOffice 2007以降のXMLベースの形式で、python-docxが対応しているのはこちらです。doc(旧形式)はバイナリ形式であり、python-docxでは読み書きできません。旧形式のdocファイルを扱う必要がある場合は、先にdocxへ変換してから処理する運用にします。
公開情報と責任主体
本記事はpython-docxの 公式ドキュメント およびAnthropicが公開している Claude Code公式ドキュメント をもとに、実務での活用方法を整理したものです。記載内容の正確性には注意を払っていますが、具体的な契約書・法的文書の運用に関しては、必ず法務担当または専門家の確認を経てください。記事の発行・編集・監修はファネルAi編集部が行っています。
関連ページと関連記事
Word文書の自動化は、提案書・PDF・スライドなど他の文書フォーマットの自動化と組み合わせると効果が広がります。
- Claude Codeで提案書を一括生成する方法:テンプレートからの量産という発想を提案書に展開した記事です。
- Claude CodeでPDFレポートを自動生成する方法:PDF変換を含む出力自動化の全体像を確認できます。
- Claude CodeでPowerPoint資料を自動生成する方法:python-pptxを使ったスライド自動化との比較に使えます。
- Claude Coworkで営業資料作成時間をゼロにする方法:desktop上で資料作成を進める別アプローチです。
- Claude Coworkとリーガルテック:契約書まわりの自動化を広く確認したい場合に参考になります。
- Claude Codeでビジネス文書ワークフローを構築する方法:文書生成を業務フロー全体に組み込む考え方を整理しています。
Word文書の自動生成を自社業務に組み込みたい場合
テンプレート設計からスクリプト化、運用フローの構築まで、Word自動化の導入を検討している場合はご相談ください。
相談前に整理しておくと早い3項目
- 自動化したい文書の種類と月間の作成件数を書き出す
- 現在のテンプレート管理方法(共有フォルダ、個人PC、SharePointなど)を確認する
- 差し替えるデータの形式(CSV、Excel、基幹システムからの出力など)を整理する
この3点があると、テンプレート設計と運用フローの提案がスムーズになります。