大量のワークシートを含む Excel ブックを納品前に整える際、「シートごとの初期表示セルやズーム倍率をそろえる」「印刷設定を統一する」 といった作業を手動で行うのは意外と手間が掛かります。本記事では openpyxl を利用し、すべてのシートに対して下記の体裁を一度に設定する Python スクリプトをご紹介いたします。
| 調整内容 | 具体的なプロパティ | 
|---|---|
| スクロール開始位置・ズーム倍率 | sheet_view.selection / zoomScale | 
| 印刷範囲・タイトル行 | print_area / print_title_rows | 
| ヘッダー・フッター | oddHeader.center.text / oddFooter.center.text | 
| 用紙方向・用紙サイズ | page_setup.orientation / page_setup.paperSize | 
| ページ合わせ | fitToWidth / fitToHeight / fitToPage | 
目次
1. 前提環境
| 項目 | 内容 | 
|---|---|
| Python | 3.10 以上 | 
| ライブラリ | openpyxl (pip install openpyxl) | 
| 入力ファイル例 | checklist.xlsx | 
| 出力ファイル例 | checklist_formatted.xlsx | 
2. シート表示の統一(初期セル & ズーム)
from openpyxl import load_workbook
# --- 設定値 ---
focus_cell = 'B2'      # シートを開いた直後に選択されるセル
zoom_ratio = 110       # ズーム倍率 (%)
wb = load_workbook('checklist.xlsx')
for ws in wb.worksheets:
    sv = ws.sheet_view
    # 選択セルを固定
    sel = sv.selection[0]
    sel.activeCell = focus_cell
    sel.sqref = focus_cell
    # ズーム倍率を統一
    sv.zoomScale = zoom_ratio
    sv.zoomScaleNormal = zoom_ratio
wb.save('checklist_formatted.xlsx')
3. 印刷設定を一括適用
from openpyxl import load_workbook
# --- 一括設定する値 ---
print_range      = 'A1:E60'
title_rows       = '1:4'
header_center    = '&F'             # ファイル名
footer_center    = '&P / &N pages'  # ページ番号
paper_direction  = 'landscape'      # portrait / landscape
paper_kind       = 'A3'             # openpyxl.constants.PAPERSIZE
fit_width_pages  = 1
fit_height_pages = 0                # 0 = 自動
wb = load_workbook('checklist_formatted.xlsx')
for ws in wb.worksheets:
    # 印刷範囲とタイトル行
    ws.print_area        = print_range
    ws.print_title_rows  = title_rows
    # ヘッダー & フッター
    ws.oddHeader.center.text = header_center
    ws.oddFooter.center.text = footer_center
    # 用紙設定
    ps = ws.page_setup
    ps.orientation = paper_direction
    ps.paperSize   = getattr(ws, f'PAPERSIZE_{paper_kind}')
    ps.fitToWidth  = fit_width_pages
    ps.fitToHeight = fit_height_pages
    ws.sheet_properties.pageSetUpPr.fitToPage = True
wb.save('checklist_formatted.xlsx')
ポイント
| コード片 | 説明 | 
|---|---|
print_area = 'A1:E60' | 余白を除いた実データ部分を設定します。 | 
title_rows = '1:4' | 印刷時に各ページの最上部へ繰り返し表示される行範囲です。 | 
fitToPage | 横幅 1 ページに収め、高さは自動 (0) にすると縦方向の改ページ数を柔軟に調整できます。 | 
4. まとめ
- sheet_view と page_setup を利用すれば、閲覧時の見やすさ と 印刷時のレイアウト をまとめて統一できます。
 - プロパティ名のスペルミス(
sheet_properties/page_setupなど)に注意しつつ、一括で設定することで納品前の最終チェック時間を短縮できます。 - 他のブックにも再利用できるよう、設定値を定数としてまとめておくと運用がスムーズです。
 
