Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excel自動印刷

Python Python
スポンサーリンク

Excel自動印刷は「帳票・レポートを自動でPDF化・印刷し、提出作業をゼロにする」ための最強スキル

Excel業務自動化の中でも 自動印刷(PDF化含む) は、
「最後の仕上げ」を自動化する非常に重要な工程です。

実務では次のような場面で使われます。

  • 帳票を自動生成 → 自動印刷して提出
  • レポートをPDF化してメール送信
  • 毎日・毎月の定型資料を自動で印刷
  • Excelを開かずに印刷したい

Pythonでは openpyxl で印刷設定 → win32com で印刷実行
という流れが最も実務的です。

初心者向けに、基本から実務テンプレまで丁寧に解説します。


Excel自動印刷の基本構造(最重要ポイント)

自動印刷は次の2ステップで構成される

  1. openpyxl で印刷設定(余白・印刷範囲・横向きなど)を整える
  2. 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化 を一連の流れで自動化できる
  • 大量印刷はバッチ処理で効率化

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