Claude Code × openpyxl でExcelグラフを自動生成・更新・デザイン統一する

Claude Code×openpyxlでExcelグラフを自動生成する方法を完全解説。棒・折れ線・円・複合グラフに対応。データ更新時は再実行だけで最新グラフ完成。月次レポート作成が大幅効率化。コード付き。

この記事をシェア:
目次 クリックで開く

📅 2025年10月 | ⏱ 読了約8分 | 🏷 Claude Code・業務自動化

棒グラフ・折れ線・円グラフ・散布図をopenpyxlで自動生成。毎月のグラフ更新作業をゼロにする完全自動化ガイド。

自動グラフ生成 売上データデモ
📊 Claude Code 生成デモ

自動グラフ生成 売上データデモ

↑ Claude Code が自動生成した実際の成果物サンプル。このクオリティが数分で完成します。

グラフ自動化で毎月の更新作業をゼロに

📌 この記事で実現できること

  • Excelグラフの完全自動生成の完全自動化を実現するPythonスクリプトを5ステップで解説
  • 「データ更新→グラフ手動作成の繰り返し」という課題を根本から解消する
  • Claude Codeへの自然言語指示だけでスクリプトを生成できる
  • 月・週・日単位の定期実行で完全無人化を実現する方法も紹介

以下のステップを順番に実行することで、今日から業務自動化を始められます。コピーして使えるコードと、Claude Codeへの指示文をセットで解説します。

Excelグラフの手動作成・更新は時間がかかります。Claude Code + openpyxl を使えば、データ更新と同時にグラフを自動再生成できます。

ステップ1:棒グラフを自動生成

💬 Claude Code へのプロンプト月別売上データから棒グラフをopenpyxlで自動生成して
import openpyxl
from openpyxl.chart import BarChart, Reference

wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb.active

chart = BarChart()
chart.type = "col"
chart.title = "月別売上実績"
chart.y_axis.title = "金額(万円)"
chart.x_axis.title = "月"
chart.style = 10
chart.width = 20
chart.height = 12

data = Reference(ws, min_col=2, max_col=3, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

ws_chart = wb.create_sheet("グラフ")
ws_chart.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("棒グラフ生成完了")
✅ 実行結果

月別売上棒グラフを自動生成。毎月のグラフ更新作業(30分)がスクリプト実行3秒に。

ステップ2:折れ線グラフで推移を可視化

from openpyxl.chart import LineChart, Reference

wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb.active

chart = LineChart()
chart.title = "売上推移(12ヶ月)"
chart.y_axis.title = "金額(万円)"
chart.style = 10
chart.width = 22; chart.height = 12

data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)

chart.series[0].graphicalProperties.line.solidFill = "107C41"
chart.series[0].graphicalProperties.line.width = 20000

ws_chart = wb.create_sheet("折れ線グラフ")
ws_chart.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("折れ線グラフ追加完了")
✅ 実行結果

ブランドカラー(緑)の折れ線グラフを自動生成。デザイン統一が自動化。

ステップ3:円グラフで構成比を可視化

from openpyxl.chart import PieChart, Reference

chart = PieChart()
chart.title = "部門別売上構成比"
chart.style = 10
chart.width = 15; chart.height = 12

data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.dataLabels.showPercent = True

ws_pie = wb.create_sheet("円グラフ")
ws_pie.add_chart(chart, "A1")
wb.save("売上グラフ.xlsx")
print("円グラフ追加完了")
✅ 実行結果

構成比パーセント付き円グラフを自動生成。経営会議資料が即完成。

ステップ4:データ更新時にグラフを自動再生成

import openpyxl, requests
from openpyxl.chart import BarChart, Reference

# 最新データをAPIから取得してExcelを更新
resp = requests.get("https://api.example.com/sales/monthly")
monthly_data = resp.json()

wb = openpyxl.load_workbook("売上データ.xlsx")
ws = wb["月別データ"]

for i, (month, value) in enumerate(monthly_data.items(), 2):
    ws.cell(i, 1, month)
    ws.cell(i, 2, value)

# グラフを再生成
for sheet in wb.sheetnames:
    if "グラフ" in sheet:
        del wb[sheet]

chart = BarChart()
chart.type = "col"; chart.title = "最新売上実績"
chart.width = 20; chart.height = 12
data = Reference(ws, min_col=2, min_row=1, max_row=ws.max_row)
cats = Reference(ws, min_col=1, min_row=2, max_row=ws.max_row)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
ws_c = wb.create_sheet("グラフ")
ws_c.add_chart(chart, "A1")

wb.save("売上データ_最新.xlsx")
print("データ更新+グラフ再生成完了")
✅ 実行結果

APIから最新データを取得しExcel更新+グラフ再生成を自動化。毎月の更新作業がゼロに。

ステップ5:複数シートのグラフを一括スタイル統一

import openpyxl

wb = openpyxl.load_workbook("複数グラフ.xlsx")
STYLE = 10; WIDTH = 20; HEIGHT = 12

for ws in wb.worksheets:
    for chart in ws._charts:
        chart.style = STYLE
        chart.width = WIDTH
        chart.height = HEIGHT
        if hasattr(chart, "y_axis"):
            chart.y_axis.numFmt = '#,##0'

wb.save("複数グラフ_統一済.xlsx")
print(f"グラフスタイルを一括統一完了")
✅ 実行結果

全シートのグラフスタイルを一括統一。デザインバラバラ問題が解消。

📊 自動化で得られる効果
⏱ 作業時間(Before) グラフ作成:45分/月×12=9時間/年
⚡ 自動化後(After) スクリプト実行:30秒
作成時間 年9時間→ほぼゼロ
スタイル統一 フォント・色・サイズが常に統一
リアルタイム データ更新で即グラフ再生成

このシステムが解決する課題

データから適切なグラフを自動選択・生成。この自動化が特に効果的な場面と、解決できる課題を整理します。

❌ よくある課題

  • データが更新されるたびにグラフを手作業で作り直している
  • グラフの種類(棒・折れ線・円など)の選択に迷い、毎回時間がかかる
  • 色・フォント・タイトルなどのデザイン設定を毎回やり直している
  • 複数のシートにある同種のデータを統合グラフにする方法がわからない

実務での活用シナリオ

業種・部門 活用方法と効果
月次レポート 売上・利益・コストの月次推移グラフを毎月自動生成。レポート作成時間を80%削減。
営業ダッシュボード 担当者別・製品別の売上グラフを日次で自動更新。常に最新状況を可視化。
在庫管理 在庫推移グラフと安全在庫ラインを自動描画。発注タイミングを視覚的に把握。
品質管理 製造ラインの不良率推移グラフを自動生成。異常傾向をグラフで即発見。
財務報告 四半期業績グラフを自動生成しPDFに組み込み。IR資料作成の外注費を削減。

導入前後の効果比較

😫 Before ─ 従来の課題

データ更新のたびにグラフを削除→再作成→書式設定の繰り返し。グラフ1本あたり15〜30分かかり、複数シートにまたがるデータのグラフ化は特に困難だった。

✅ After ─ Claude Code で解決

openpyxlのChartオブジェクトでグラフを自動生成。データ系列・色・タイトル・軸ラベルをすべてコードで定義済みのため、再実行するだけで最新データのグラフが完成。

導入のポイントと注意事項

💡 スムーズに運用するためのコツ

  • グラフのデータ範囲はReference()で動的に設定することで、行数が変わっても自動的に全データを取得できる
  • カラーパレットは10色以下に制限し、同系色の濃淡で統一感を出すと視認性が高まる
  • 棒グラフのデータラベル表示はchart.plots[0].dLbls属性で制御できる(ただしopenpyxlの機能制限あり)
  • グラフタイトルは動的に設定(例:f”{year}年{month}月 売上推移”)すると毎月の更新作業が不要になる

よくある質問(FAQ)

Q. 既存のExcelにグラフを追加できますか?
A. はい。openpyxl.load_workbook()で既存ファイルを読み込み、グラフを追加して上書き保存できます。既存データやフォーマットを保持したままグラフだけを追加・更新できます。
Q. 複合グラフ(棒グラフ+折れ線グラフ)は作れますか?
A. openpyxlのBarChartとLineChartを組み合わせたCombinedChartで作成できます。Claude Codeに「棒グラフと折れ線グラフの複合グラフを作って」と指示するだけでコードを生成できます。
Q. 生成したグラフをPowerPointに貼り付けられますか?
A. Excelでグラフ入りファイルを生成後、python-pptxのadd_picture()でグラフ画像を貼り付ける方法が実用的です。またはwin32comを使ったCOMオートメーションで直接貼り付けも可能です。

まとめ

✅ 棒・折れ線・円グラフを自動生成
✅ APIデータ更新+グラフ再生成を自動化
✅ 複数シートのグラフスタイルを一括統一

どんな現場で使われているか:活用シナリオ

対象者 導入前の課題 Claude Code導入後
営業担当 毎月の売上グラフをExcelで手動作成して1時間 データ更新だけでグラフが自動更新・PPTへ自動挿入
データ分析担当 複数の集計軸でグラフを毎回作り直している 軸指定だけで複数パターンのグラフを一括自動生成
経営企画 KPIダッシュボードを毎月ゼロから構築している テンプレートにデータを渡すだけでダッシュボード自動生成

実装で押さえるべき重要ポイント

  • 1
    openpyxlのチャート種類を目的で使い分ける:比較にはBarChart、推移にはLineChart、割合にはPieChart。Claude Codeに「目的を伝えてグラフ種類を選んでもらう」アプローチが効果的です。
  • 2
    グラフタイトル・軸ラベルを動的に生成:「2025年4月 カテゴリ別売上比較」のようなタイトルを変数から動的に生成することで、毎月同じスクリプトをそのまま使い回せます。
  • 3
    PNG出力とExcel埋め込みの二刀流:同じグラフをPNG保存とExcel埋め込みで両方出力することで、PPT貼り付け用とExcel資料用を一度の実行で用意できます。

ビジネスインパクト

1時間→0分
グラフ作成時間
複数パターン
一括生成できるグラフ数
Excel+PPT
自動出力できる形式

この記事のまとめ

  • ✅ Excelデータから棒・折れ線・円グラフを自動生成してExcelに埋め込める
  • ✅ 複数パターンのグラフを一括生成してPowerPoint自動挿入まで連携できる
  • ✅ 毎月1時間かかっていたグラフ作成がゼロになる
  • ✅ データ更新のたびに自動でグラフが更新される仕組みを構築できる


よくある質問(FAQ)

A. openpyxlはExcel内にネイティブなグラフを作成でき、PowerPoint等への連携が容易です。matplotlibはより高度なデザインと多様なグラフ種類に対応しますが、画像として出力します。用途と目的に応じてClaude Codeが最適な選択を提案します。

A. matplotlibでは日本語フォントの設定が必要です。japanize-matplotlibライブラリを使うと1行の設定だけで日本語が表示されるようになります。openpyxlでは日本語をそのまま使用できます。

A. はい、フォルダ監視(watchdog等)を組み合わせてExcelファイルの更新を検知し、自動的にグラフを再生成する仕組みを構築できます。毎朝定時実行でも対応可能で、更新完了をメールやTeamsで通知することもできます。


関連記事


制作実績サンプル

このクオリティの資料が、あなたの業務でも作れます

Aurant Technologies が実際に制作したコンサルティング資料(全82枚)のサンプルです。Claude Code × AI自動化により、従来の1/5のコスト・時間で同等品質を実現します。

タイトルスライド

タイトル・ダーク背景
3カラム分析

3カラム比較・分析
AI活用フロー

AI活用フロー図解
Before/After

Before/After比較
RFPテンプレート

構造化コンテンツ
全10枚を
見る

御社のテーマでこのレベルの資料を作成できます
制作費・納期・自動化プランは無料相談でご確認いただけます

📊 サンプル全10枚を見る →

Claude Codeで業務自動化を始めよう

自然言語で指示するだけでスクリプトを自動生成します。

無料で試してみる →

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: