Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel→PDF変換

Python Python
スポンサーリンク

Excel→PDF変換は「Excel帳票を自動でPDF化し、提出・共有・保管を一瞬で完了させる」ための最強スキル

業務効率化を本気で考える人にとって、
Excel→PDF変換の自動化は“Pythonで最も実務効果が高いExcel業務自動化” です。

Excelは編集しやすい反面、
提出・共有・保管には PDF形式が必須 になることが多いです。

Pythonを使えば、
Excel読み込み → 印刷設定 → PDF出力
まで完全自動化できます。

初心者でも理解できるように、例題を交えて丁寧に解説します。


Excel→PDF変換の基本構造(最重要ポイント)

Excel→PDF変換は次の2ステップで構成されます。

Excelの印刷設定を整える(openpyxl)

印刷範囲・余白・向きを設定して「見やすいPDF」にします。

PDFとして保存する(win32com)

ExcelアプリをPythonから操作してPDF化します。

この2つを理解すれば、どんなExcelでもPDFに変換できます。


Excel→PDF変換の最小テンプレート(Windows専用)

ExcelをPDFに変換する最小コード

import win32com.client as win32

excel = win32.Dispatch("Excel.Application")
excel.Visible = False

wb = excel.Workbooks.Open(r"C:\path\report.xlsx")
ws = wb.Worksheets("Sheet1")

ws.ExportAsFixedFormat(0, r"C:\path\report.pdf")  # 0 = PDF

wb.Close(False)
excel.Quit()
Python

深掘りポイント

  • ExportAsFixedFormat(0, …) がPDF化の本体
  • Excelを開かずにPDF化できる
  • Windows環境で最も安定する方法

印刷範囲・余白・向きを整えて「見やすいPDF」にする

openpyxlで印刷設定を整える

from openpyxl import load_workbook
from openpyxl.worksheet.page import PageMargins

wb = load_workbook("report.xlsx")
ws = wb.active

ws.print_area = "A1:F40"

ws.page_margins = PageMargins(
    left=0.5, right=0.5, top=0.5, bottom=0.5
)

ws.page_setup.orientation = "landscape"

wb.save("report_ready.xlsx")
Python

深掘りポイント

  • 印刷範囲を指定しないと余白だらけのPDFになる
  • 余白を調整すると帳票が見やすくなる
  • 横向きは「横長の帳票」で必須

Excel→PDF変換の実務テンプレート(最も使われる構成)

印刷設定 → PDF化まで自動化する

from openpyxl import load_workbook
import win32com.client as win32

wb = load_workbook("invoice.xlsx")
ws = wb.active

ws.print_area = "A1:E50"
wb.save("invoice_ready.xlsx")

excel = win32.Dispatch("Excel.Application")
excel.Visible = False

wb2 = excel.Workbooks.Open(r"invoice_ready.xlsx")
ws2 = wb2.Worksheets("Sheet1")

ws2.ExportAsFixedFormat(0, r"invoice.pdf")

wb2.Close(False)
excel.Quit()
Python

深掘りポイント

  • 帳票(請求書・発注書・レポート)をPDF化する業務に最適
  • Excelを開かずにPDF化できるため完全自動化が可能

複数ExcelをまとめてPDF化する(大量処理を自動化)

フォルダ内のExcelをすべてPDF化

import win32com.client as win32
import glob
import os

excel = win32.Dispatch("Excel.Application")
excel.Visible = False

files = glob.glob("reports/*.xlsx")

for file in files:
    wb = excel.Workbooks.Open(os.path.abspath(file))
    ws = wb.Worksheets(1)
    pdf_name = file.replace(".xlsx", ".pdf")
    ws.ExportAsFixedFormat(0, pdf_name)
    wb.Close(False)

excel.Quit()
Python

深掘りポイント

  • 月末の大量帳票を一括PDF化できる
  • 1クリックで全PDFが生成される

Excelの複数シートをそれぞれPDF化する(帳票管理でよく使う)

シートごとにPDFを作成

excel = win32.Dispatch("Excel.Application")
excel.Visible = False

wb = excel.Workbooks.Open(r"multi_sheet.xlsx")

for sheet in wb.Worksheets:
    pdf_name = f"{sheet.Name}.pdf"
    sheet.ExportAsFixedFormat(0, pdf_name)

wb.Close(False)
excel.Quit()
Python

深掘りポイント

  • シート単位の帳票(売上・在庫・KPIなど)を自動でPDF化
  • 手作業で1シートずつ保存する必要がなくなる

Excel→PDF変換+テンプレート処理(帳票生成の自動化)

テンプレートにデータを差し込み → PDF化

from openpyxl import load_workbook
import win32com.client as win32

wb = load_workbook("template.xlsx")
ws = wb["データ"]

ws["B2"].value = "MONO株式会社"
ws["B3"].value = "2026-05-26"
ws["B5"].value = 150000

wb.save("invoice_filled.xlsx")

excel = win32.Dispatch("Excel.Application")
excel.Visible = False

wb2 = excel.Workbooks.Open(r"invoice_filled.xlsx")
ws2 = wb2.Worksheets("データ")
ws2.ExportAsFixedFormat(0, "invoice.pdf")

wb2.Close(False)
excel.Quit()
Python

深掘りポイント

  • 帳票テンプレートにデータを自動入力
  • 入力後すぐにPDF化
  • 完全自動の帳票生成システムが作れる

Excel→PDF変換を業務で設計するときの視点

印刷範囲を必ず設定する

PDFの見た目が大きく変わる。

余白・向きを調整する

帳票の読みやすさが劇的に向上する。

win32com を使う

Excelアプリを直接操作するため最も安定。

テンプレートと組み合わせる

帳票生成 → PDF化 → 保存 が完全自動化できる。

タイトルとURLをコピーしました