Zenn Dev Minipoisson Articles 3091ff2bb517ac
絶望的な制約下で挑む「Excel帳票フォントサイズ調整」の完全自動化
- URL: https://zenn.dev/minipoisson/articles/3091ff2bb517ac
- 日付: 2026-06-26
- Tier: Tier 3
- 要旨: マクロ禁止の.xlsxと改修不可の業務システムという二重制約下で、Excel帳票の報告書フォントサイズを自動調整する仕組みを構築した実装レポートだ。フォントサイズ算出はマクロ付き別Excelで行い、結果をCSV経由で業務システムに渡す。帳票側はIF関数とFILTERXML関数を組み合わせたサイズ別スイッチング領域を印刷外に用意し、図のリンク貼り付けで表示領域に重ねることでマクロなしのフォント切り替えを実現している。409.5ptという行の高さ上限も縦結合セルで回避しており、1日1〜2時間の手作業削減とヒューマンエラー撲滅を達成した。
詳細
制約条件
- 帳票は.xlsx(マクロ不可)、業務システム側はベンダー製で改修不可
- 業務システムが書き込めるのはデータ流し込み用シートへの値のみ
フォントサイズ算出(マクロあり別Excel)
- FILTERXML関数で段落ごとにセルを分割(Excel 2019以前でも使用可)
- AutoFitを利用してセル高さを計測、枠に収まるまで1pt刻みでサイズを下げるループをVBAで実装
- 画面と印刷のズレを考慮し各段落末尾に1文字追加する安全マージンを設定
- 算出されたフォントサイズをCSVで出力し業務システムへ登録
帳票側の表示切り替え(.xlsxのみ)
- 印刷外領域にフォントサイズ別のセル領域を用意(IF関数でサイズが一致するセルだけに本文を入れる)
- 縦結合セルで409.5ptの高さ上限を回避
- 各領域を図のリンク貼り付けで印刷領域に重ねて配置(文字列ではなくレンダリング済み画像として扱われるため255文字制限が消える)
- テキストボックスでは255文字制限に阻まれたため図のリンク貼り付けへ変更した経緯あり
- 目盛線のチェックを外すことでPDF出力時の薄いグレー縁問題を解決
運用上の工夫
- 査読記録の自動生成とフォントサイズ登録をCSV出力で抱き合わせ、登録漏れを構造的に防止