Excel自動印刷は「帳票・レポートを自動でPDF化・印刷し、提出作業をゼロにする」ための最強スキル
Excel業務自動化の中でも 自動印刷(PDF化含む) は、
「最後の仕上げ」を自動化する非常に重要な工程です。
実務では次のような場面で使われます。
- 帳票を自動生成 → 自動印刷して提出
- レポートをPDF化してメール送信
- 毎日・毎月の定型資料を自動で印刷
- Excelを開かずに印刷したい
Pythonでは openpyxl で印刷設定 → win32com で印刷実行
という流れが最も実務的です。
初心者向けに、基本から実務テンプレまで丁寧に解説します。
Excel自動印刷の基本構造(最重要ポイント)
自動印刷は次の2ステップで構成される
- openpyxl で印刷設定(余白・印刷範囲・横向きなど)を整える
- win32com(Excelアプリを操作)で印刷 or PDF化する
この2つを理解すれば、どんな帳票でも自動印刷できます。
基本:Excelを自動印刷する最小コード(Windows限定)
Excelを開かずに印刷する
import win32com.client as win32
excel = win32.Dispatch("Excel.Application")
excel.Visible = False
wb = excel.Workbooks.Open(r"C:\path\to\file.xlsx")
ws = wb.Worksheets("Sheet1")
ws.PrintOut() # 印刷実行
wb.Close(SaveChanges=False)
excel.Quit()
Python深掘りポイント
win32comは Excel を“本物のアプリ”として操作できるPrintOut()で印刷が実行される- Excelを開かずに印刷できるため自動化に最適
印刷設定を openpyxl で整える(印刷品質が劇的に上がる)
印刷範囲・余白・横向き設定
from openpyxl import load_workbook
from openpyxl.worksheet.page import PageMargins
wb = load_workbook("report.xlsx")
ws = wb.active
# 印刷範囲
ws.print_area = "A1:D30"
# 余白設定
ws.page_margins = PageMargins(
left=0.5, right=0.5, top=0.5, bottom=0.5
)
# 横向き印刷
ws.page_setup.orientation = "landscape"
wb.save("report_print_ready.xlsx")
Python深掘りポイント
- 印刷範囲を指定しないと“余計な空白”が印刷される
- 余白を調整すると帳票が見やすくなる
- 横向きは「横長の帳票」で必須
PDFとして自動保存(提出資料の自動化に必須)
Excel → PDF を自動生成
import win32com.client as win32
excel = win32.Dispatch("Excel.Application")
excel.Visible = False
wb = excel.Workbooks.Open(r"C:\path\to\report.xlsx")
ws = wb.Worksheets("Sheet1")
ws.ExportAsFixedFormat(0, r"C:\path\to\report.pdf") # 0 = PDF
wb.Close(SaveChanges=False)
excel.Quit()
Python深掘りポイント
ExportAsFixedFormatでPDF化できる- 提出資料を自動でPDF化 → メール送信の自動化と相性抜群
- Excelを開かずにPDF化できる
例題①:帳票を自動生成 → 印刷まで自動化
帳票作成 → 印刷のフル自動化
from openpyxl import Workbook
import win32com.client as win32
# 帳票作成
wb = Workbook()
ws = wb.active
ws["A1"].value = "売上帳票"
ws["A3"].value = "商品"
ws["B3"].value = "数量"
ws["C3"].value = "金額"
data = [
["りんご", 10, 1000],
["みかん", 5, 500],
]
for i, row in enumerate(data, start=4):
for j, v in enumerate(row, start=1):
ws.cell(row=i, column=j, value=v)
wb.save("invoice.xlsx")
# 印刷
excel = win32.Dispatch("Excel.Application")
excel.Visible = False
wb2 = excel.Workbooks.Open(r"invoice.xlsx")
ws2 = wb2.Worksheets("Sheet1")
ws2.PrintOut()
wb2.Close(False)
excel.Quit()
Python解説
- 帳票作成 → 印刷まで完全自動
- 毎日の帳票印刷業務をゼロにできる
例題②:複数ファイルを一括印刷(バッチ印刷)
import win32com.client as win32
import glob
excel = win32.Dispatch("Excel.Application")
excel.Visible = False
files = glob.glob("reports/*.xlsx")
for f in files:
wb = excel.Workbooks.Open(f)
wb.Worksheets(1).PrintOut()
wb.Close(False)
excel.Quit()
Python解説
- 大量の帳票を一括印刷できる
- 月末処理の自動化に最適
例題③:PDF化して保存 → メール送信の前処理に最適
ws.ExportAsFixedFormat(0, r"output\report.pdf")
Python解説
- PDF化は提出資料の自動化に必須
- メール送信スクリプトと組み合わせると最強
Excel自動印刷を業務で設計するときの視点
- 印刷設定(余白・範囲・向き)を openpyxl で整える
- 印刷実行は win32com が最も安定
- PDF化は提出資料の自動化に必須
- 帳票生成 → 印刷 → PDF化 を一連の流れで自動化できる
- 大量印刷はバッチ処理で効率化
