Excelファイル内のグラフを一括で画像保存するPythonツールの使い方
Excelで作成したグラフを一つ一つ手作業で画像として保存するのは面倒ですよね。今回紹介するPythonスクリプトを使えば、フォルダ内のすべてのExcelファイルからグラフを自動で抽出し、PNG画像として保存できます。業務の自動化やレポート作成に非常に便利です。
特徴
- 指定フォルダ内のすべてのExcelファイルを自動スキャン
- 各シート内のグラフを個別にPNG画像として保存
- ファイル名に元のExcelファイル名とシート名を含むため、識別しやすい
事前準備
このスクリプトはWindows環境とMicrosoft ExcelがインストールされているPCでのみ動作します。
必要なPythonモジュール
pywin32
(WindowsのCOM経由でExcelを操作)
以下のコマンドでインストールできます:
pip install pywin32
スクリプトの内容
プログラムの主な構成は以下の通りです:
save_charts_from_excel
個々のExcelファイルを開き、すべてのシートからグラフを画像として保存します。process_folder
指定されたフォルダ内のExcelファイルを順次処理します。main処理
カレントフォルダを対象に、処理を実行します。
import os
import win32com.client
def save_charts_from_excel(file_path, output_folder):
excel = win32com.client.Dispatch("Excel.Application")
excel.DisplayAlerts = False
excel.Visible = False
try:
abs_file_path = os.path.abspath(file_path)
abs_output_folder = os.path.abspath(output_folder)
wb = excel.Workbooks.Open(abs_file_path)
for sheet in wb.Sheets:
chart_count = 0
for chart in sheet.ChartObjects():
img_path = os.path.join(
abs_output_folder,
f"{os.path.splitext(os.path.basename(file_path))[0]}_{sheet.Name}_chart{chart_count}.png"
)
chart.Chart.Export(os.path.abspath(img_path))
chart_count += 1
wb.Close(False)
except Exception as e:
print(f"エラーが発生しました: {file_path} → {e}")
finally:
excel.Quit()
def process_folder(folder_path, output_folder):
abs_folder_path = os.path.abspath(folder_path)
abs_output_folder = os.path.abspath(output_folder)
os.makedirs(abs_output_folder, exist_ok=True)
for filename in os.listdir(abs_folder_path):
if filename.endswith(".xlsx") or filename.endswith(".xls") or filename.endswith(".xlsm"):
file_path = os.path.join(abs_folder_path, filename)
save_charts_from_excel(file_path, abs_output_folder)
folder_path = "."
output_folder = "."
process_folder(folder_path, output_folder)
使い方
1. スクリプトを保存
添付の saveExcelFigure.py
を任意のフォルダに保存してください。
2. 処理対象フォルダにExcelファイルを配置
グラフを抽出したい .xlsx
や .xlsm
形式のファイルを同じフォルダに置きます。
3. スクリプトを実行
コマンドプロンプトまたはPowerShellで以下のように実行します:
python saveExcelFigure.py
保存される画像ファイル名のルール
画像は以下の形式で出力されます:
[元のファイル名]_[シート名]_chart[連番].png
例:
report2023_Sheet1_chart0.png
report2023_Sheet1_chart1.png
カスタマイズ方法
folder_path
と output_folder
の変数を変更することで、処理対象フォルダや保存先フォルダを任意の場所に変更できます。
folder_path = "C:/path/to/excel/files"
output_folder = "C:/path/to/save/images"
よくあるエラー
- Excelがインストールされていない
→ WindowsにMicrosoft Excelがインストールされている必要があります。 - ファイルが開かない/グラフが見つからない
→ グラフが「オブジェクト」として挿入されていない、あるいは対応していない形式である可能性があります。