Python 業務自動化 | Excel業務自動化:Excel基本操作 - Excelテンプレ作成

Python Python
スポンサーリンク

Excelテンプレ作成は「毎回同じフォーマットを自動生成し、作業時間を大幅削減する」ための最強スキル

Excel業務自動化の中でも、テンプレート(雛形)を自動生成する処理は特に効果が大きいです。
なぜなら、実務では次のような「毎回同じ形のExcel」を作る場面が非常に多いからです。

  • 日報・週報・月報
  • 売上明細テンプレート
  • 入力フォーム
  • チェックリスト
  • 顧客管理シートの初期フォーマット

Python(openpyxl)を使えば、
セル配置・書式設定・入力規則・コメント・罫線・列幅・行高さ
などをすべて自動で設定したテンプレートを作れます。

ここでは、初心者でも理解しやすいように
「基本 → 実務テンプレ → 高度テンプレ」
の順で丁寧に解説します。


新規Excelを作成してテンプレの土台を作る(最も基本)

新規ファイルを作成して保存する

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

ws.title = "入力フォーム"

wb.save("template.xlsx")
Python

深掘りポイント

  • Workbook() で新規Excelを作成
  • ws.title でシート名を変更
  • まずは「空のテンプレ」を作るところから始める

ヘッダー行を作成する(テンプレの基本構造)

A1〜C1 に項目名を設定

ws["A1"].value = "日付"
ws["B1"].value = "担当者"
ws["C1"].value = "内容"
Python

深掘りポイント

  • テンプレートは「項目名」を最初に作る
  • ここが土台になるため、後の処理が楽になる

ヘッダー行の書式を整える(見やすいテンプレに必須)

太字・背景色・中央揃えを設定

from openpyxl.styles import Font, PatternFill, Alignment

header_font = Font(bold=True)
header_fill = PatternFill(fill_type="solid", fgColor="DDDDDD")
header_align = Alignment(horizontal="center")

for cell in ws["1:1"]:
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = header_align
Python

深掘りポイント

  • ヘッダー行は必ず「太字+背景色+中央揃え」にすると見やすい
  • テンプレートの品質が一気に上がる

列幅を調整してテンプレを整える(視認性UP)

列幅を設定

ws.column_dimensions["A"].width = 12
ws.column_dimensions["B"].width = 15
ws.column_dimensions["C"].width = 40
Python

深掘りポイント

  • 内容欄(C列)は広めにするのが実務的
  • 列幅調整はテンプレ作成の必須工程

入力規則(データ検証)を設定する(入力ミス防止)

B列に「担当者リスト」のプルダウンを設定

from openpyxl.worksheet.datavalidation import DataValidation

dv = DataValidation(type="list", formula1='"山田,佐藤,鈴木"')
ws.add_data_validation(dv)
dv.add("B2:B100")
Python

深掘りポイント

  • テンプレートに入力規則を仕込むとミスが激減
  • プルダウンは実務で最も使われる

コメントを追加して説明を付ける(ユーザーに優しいテンプレ)

A1 に説明コメントを付ける

from openpyxl.comments import Comment

ws["A1"].comment = Comment("日付を YYYY/MM/DD 形式で入力してください", "システム")
Python

深掘りポイント

  • コメントは「説明書き」として非常に便利
  • 入力者が迷わないテンプレートになる

罫線を引いて表を整える(テンプレの完成度UP)

A1〜C20 に罫線を設定

from openpyxl.styles import Border, Side

border = Border(
    left=Side(style="thin"),
    right=Side(style="thin"),
    top=Side(style="thin"),
    bottom=Side(style="thin")
)

for row in ws["A1:C20"]:
    for cell in row:
        cell.border = border
Python

深掘りポイント

  • 罫線があるだけでテンプレの完成度が大幅に上がる
  • 入力フォーム・明細表で必須

例題①:入力フォームテンプレートを自動生成する

シナリオ

日付・担当者・内容の入力フォームを作るテンプレ

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.worksheet.datavalidation import DataValidation
from openpyxl.comments import Comment

wb = Workbook()
ws = wb.active
ws.title = "入力フォーム"

# ヘッダー
headers = ["日付", "担当者", "内容"]
for col, text in zip(["A", "B", "C"], headers):
    ws[f"{col}1"].value = text

# 書式
header_font = Font(bold=True)
header_fill = PatternFill(fill_type="solid", fgColor="DDDDDD")
header_align = Alignment(horizontal="center")

for cell in ws["1:1"]:
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = header_align

# 列幅
ws.column_dimensions["A"].width = 12
ws.column_dimensions["B"].width = 15
ws.column_dimensions["C"].width = 40

# プルダウン
dv = DataValidation(type="list", formula1='"山田,佐藤,鈴木"')
ws.add_data_validation(dv)
dv.add("B2:B100")

# コメント
ws["A1"].comment = Comment("日付を YYYY/MM/DD 形式で入力", "システム")

# 罫線
border = Border(
    left=Side(style="thin"),
    right=Side(style="thin"),
    top=Side(style="thin"),
    bottom=Side(style="thin")
)

for row in ws["A1:C20"]:
    for cell in row:
        cell.border = border

wb.save("input_template.xlsx")
Python

解説

  • このコードだけで「実務レベルの入力フォーム」が完成
  • 毎回の作業を完全自動化できる

例題②:売上明細テンプレートを自動生成する

シナリオ

商品名・数量・金額の明細テンプレ

wb = Workbook()
ws = wb.active
ws.title = "売上明細"

ws["A1"].value = "商品名"
ws["B1"].value = "数量"
ws["C1"].value = "金額"

ws.column_dimensions["A"].width = 25
ws.column_dimensions["B"].width = 10
ws.column_dimensions["C"].width = 15

ws["B1"].comment = Comment("数量は整数で入力", "システム")

wb.save("sales_template.xlsx")
Python

解説

  • 売上管理のテンプレートとしてそのまま使える
  • コメントで入力ルールを明確化

例題③:チェックリストテンプレートを自動生成する

wb = Workbook()
ws = wb.active
ws.title = "チェックリスト"

ws["A1"].value = "項目"
ws["B1"].value = "確認"

dv = DataValidation(type="list", formula1='"OK,NG"')
ws.add_data_validation(dv)
dv.add("B2:B50")

wb.save("checklist_template.xlsx")
Python

解説

  • チェックリストは実務で非常に多い
  • プルダウンで入力ミスを防げる

Excelテンプレ作成を業務で設計するときの視点

  • ヘッダー行の書式設定はテンプレの品質を決める
  • 列幅・行高さを整えると視認性が大幅UP
  • 入力規則(プルダウン)でミスを防げる
  • コメントで説明を付けるとユーザーが迷わない
  • 罫線で表を整えるとプロ品質のテンプレになる
  • pandasではテンプレ作成ができないため openpyxl が必須

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