Excelの表をA4 1ページに収めたPDFで提出する方法|スプレッドシートの「ページに合わせる」で10シートを揃えた手順と、フォント・行高の落とし穴
Excelの表をA4 1ページに収めたPDFで提出する方法|スプレッドシートの「ページに合わせる」で10シートを揃えた手順と、フォント・行高の落とし穴
事業計画書や資金計画、見積の内訳表など、表計算ソフトで作った資料をPDFにして銀行や取引先へ出す場面は多くあります。そこで毎回起きるのが「A4 1ページに収まらない」「途中で2ページに割れる」「横長の表が縦に切れる」という問題です。
先に結論を書きます。印刷の倍率を「ページに合わせる」にして、シートごとに縦横を決め、1シート1ページで書き出してから結合する。これで表計算のPDFは揃います。
Excelでも同じ設定はできます。ただ、シートが10枚近くあり、数字を直すたびに出し直すなら、Googleスプレッドシートに取り込んで書き出す方が確実です。手作業でも数分で終わり、自動化すれば1回の実行で全シートが揃います。
この記事では、名古屋の美容サロンFCの新店で、銀行提出用の事業計画書10シートをA4 1ページずつのPDFに揃えた実例をもとに、手作業の手順、複数シートを自動で書き出す構成、そしてフォントと行高で起きる落とし穴の防ぎ方をまとめます。
結論:倍率「ページに合わせる」+シートごとの向き+1シート1ページで結合
表計算のPDFで「1ページに収める」を確実にする手順は3つです。
- シートごとに縦横を決める。表紙や文章中心のシートは縦、列が多い数表は横
- 倍率を「ページに合わせる」にする。幅だけ・高さだけではなく、ページ全体に合わせる
- 1シート1ページで書き出し、最後に結合する。ブック全体を一度に出さず、シート単位で出す
Googleスプレッドシートでの手作業の手順は次のとおりです。
- 対象のシートを開き、「ファイル」→「ダウンロード」→「PDF」を選ぶ
- 書き出し範囲を「現在のシート」にする
- 用紙サイズをA4、ページの向きをそのシートに合わせて選ぶ
- 倍率を「ページに合わせる」にする
- 書式設定でグリッド線を非表示にし、必要ならシート名やページ番号も外す
- 「書き出し」を押す。これをシートの数だけ繰り返し、最後にPDFを結合する
倍率の選択肢は「標準」「幅に合わせる」「高さに合わせる」「ページに合わせる」の4つです。横長の表で「幅に合わせる」を選ぶと、幅は収まっても行数が多いと下にはみ出して2ページ目ができます。1ページに収めるなら「ページに合わせる」一択です。
Excelで詰まる場面と、スプレッドシートへ持っていく判断
Excelでも「ページレイアウト」→「拡大縮小印刷」で横1ページ×縦1ページを指定すれば、1シートを1ページに収められます。シートが1〜2枚で、提出が1回きりなら、Excelの印刷設定で十分です。
判断が変わるのは、次のどれかに当てはまるときです。
| 状況 | 向いている方法 |
|---|---|
| シート1〜2枚、提出は1回 | Excelの拡大縮小印刷で手作業 |
| シートが5枚以上、縦横が混在 | スプレッドシートで1シートずつ書き出し |
| 数字の修正が入るたびに出し直す | スプレッドシート+書き出しの自動化 |
| 複数の店舗・案件で同じ構成の資料を作る | 元データを差し替えて同じ手順で再生成 |
MacのExcelを外部から操作して、無人で連続してPDF保存させる方法は、実務では勧めません。保存の指示を送っても、起動時のダイアログや確認画面で処理が止まり、応答が返らないまま時間切れになることがあります。画面を見ずに動かす前提の作業には向いていません。表計算のPDF化を繰り返すなら、最初からスプレッドシート側で書き出す構成にしておく方が手戻りがありません。
実例:銀行提出用の事業計画書10シートをA4 1ページずつに揃えた
名古屋の美容サロンFCが新店を出すにあたり、オーナーが銀行へ提出する事業計画書を作りました。Excelで生成した資料で、構成は10シートです。
| 種類 | 枚数 | 向き |
|---|---|---|
| 表紙 | 1 | 縦 |
| 参考資料(既存店の実績・物件条件など) | 2 | 縦 |
| 前提条件・開業費用・資金計画・月次収支・返済計画などの数表 | 7 | 横 |
数表は列が多いので横、表紙と参考資料は縦です。この縦横混在を1つのPDFにまとめ、各シートがちょうど1ページに収まる形が求められました。
書き出しはGoogleスプレッドシートの書き出し機能を、倍率「ページに合わせる」で使いました。流れは次のとおりです。
- Excelファイルの中身を、あらかじめ用意したスプレッドシートに流し込む。既存のスプレッドシートに中身を差し替える方式なので、URLが変わらず共有先を直さずに済む
- シートごとに縦横を指定し、倍率「ページに合わせる」でPDFを1枚ずつ書き出す
- 10枚を結合し、各ページが1ページに収まっているか、縦横が指定どおりかを確認する
この案件では、内装費の見積が更新され、借入額と自己資金の配分が変わるという修正が2度入り、3版目で確定しました。書き出しの手順を固定してあったので、修正のたびに10枚をすべて出し直しても、作業は数分で終わりました。
同じFCの別オーナーが3店舗目を出す際にも、同じ手順をそのまま流用しました。シート構成は9枚、表紙と物件条件が縦、それ以外が横です。手順が同じなので、資料の構成が違っても出力の品質は揃います。
自動化する場合の構成:書き出しURLに倍率を指定する
シートが多い、数字の修正が繰り返される、複数案件で同じ構成を使う。この条件に当てはまるなら、書き出しを自動化します。Googleスプレッドシートは、PDFの書き出しをURLで指定できます。画面で選ぶ項目が、そのままURLのパラメータになります。
https://docs.google.com/spreadsheets/d/{スプレッドシートID}/export
?format=pdf&gid={シートのgid}&size=A4&portrait=false
&scale=4&gridlines=false&sheetnames=false&printtitle=false
&pagenum=UNDEFINED&horizontal_alignment=CENTER&vertical_alignment=TOP
&top_margin=0.5&bottom_margin=0.5&left_margin=0.4&right_margin=0.4
主な指定は次のとおりです。
| パラメータ | 意味 | 1ページ収めでの値 |
|---|---|---|
gid |
書き出すシート | シートごとに変える |
size |
用紙サイズ | A4 |
portrait |
縦向きにするか | 表紙は true、数表は false |
scale |
倍率 | 4(ページに合わせる) |
gridlines |
グリッド線 | false |
sheetnames / printtitle / pagenum |
シート名・タイトル・ページ番号 | いずれも出さない |
scale の値は画面の選択肢と対応しており、1が標準、2が幅に合わせる、3が高さに合わせる、4がページに合わせるです。
このURLを、スプレッドシートに編集権限で共有したサービスアカウントの認証トークンを付けて取得すると、PDFが返ってきます。10シートなら、gid と portrait を変えて10回取得し、結合します。
import time, requests, fitz # fitz = PyMuPDF
EXPORT = "https://docs.google.com/spreadsheets/d/{sid}/export"
BASE = dict(format="pdf", size="A4", scale=4, gridlines="false",
sheetnames="false", printtitle="false", pagenum="UNDEFINED",
top_margin=0.5, bottom_margin=0.5, left_margin=0.4, right_margin=0.4)
merged = fitz.open()
for gid, portrait in SHEETS: # [(gid, True/False), ...] 表紙=True・数表=False
params = dict(BASE, gid=gid, portrait=str(portrait).lower())
for n in range(1, 6):
r = requests.get(EXPORT.format(sid=SHEET_ID), params=params,
headers={"Authorization": f"Bearer {token}"})
if r.status_code == 429:
time.sleep(15 * n)
continue
r.raise_for_status()
break
part = fitz.open(stream=r.content, filetype="pdf")
assert part.page_count == 1, f"gid={gid} が {part.page_count} ページ"
merged.insert_pdf(part)
time.sleep(8)
merged.save("提出用.pdf")
自動化で押さえる点は3つです。
- 連続で取得すると6枚目あたりで429(リクエスト過多)が返る。1枚ごとに8〜10秒空け、429が返ったら15秒×回数で待ってやり直す。この間隔で10枚すべて成功した
- 1枚ごとに「1ページか」を確認する。ページ数が2以上なら、その時点で止めて原因を見る
- 結合後に用紙の向きを確認する。A4のPDFは縦なら幅595ポイント、横なら幅842ポイント。ページごとの幅を見れば、縦横の指定漏れが機械的に分かる
元データの差し替えも自動化できます。サービスアカウントは自分のドライブ容量を持たないため、新しいスプレッドシートを作る操作が失敗することがあります。既存のスプレッドシートを複製して共有し、その中身をExcelファイルで上書きする方式にすると、URLが変わらず、数式は流し込み後にスプレッドシート側で再計算されます。
フォントと行高の落とし穴:書き出す前に直す2点
「ページに合わせる」で収まっても、中身で2つの落とし穴があります。どちらも、書き出す前にExcel側で直しておくものです。
フォントは、スプレッドシート側にある書体を指定する
Excelで游ゴシックなどの日本語フォントを指定していると、スプレッドシートに取り込んだ時点でその書体は存在しません。書き出したPDFでは明朝系に置き換わります。読めなくはありませんが、ゴシックで作った資料が明朝で出てくると、提出先には別の資料に見えます。
Excelファイルを作る段階で、フォントをNoto Sans JPにしておくと、スプレッドシートが持つ書体なのでゴシックのまま出ます。取り込んでから全シートのフォントを変えるより、生成元で指定する方が確実です。
行の高さは固定せず、自動にする
前提条件や備考のように長い文章が入るセルは、行の高さを固定していると途中で切れます。Excelで見た目を整えるために行高を30などに固定していると、スプレッドシートの書き出しではその高さで切り取られ、備考の後半がPDFに出ません。
行の高さを指定しない(自動)にしておくと、書き出しはセルの内容に合わせて行を伸ばし、長文も全文表示されます。見た目の揃えは列幅で調整し、行高は自動に任せるのが、PDF化を前提にした表の作り方です。
「ページに合わせる」で文字が小さくなりすぎる場合
倍率をページに合わせる以上、列が多いほど文字は縮みます。1ページに収まっても読めなければ意味がありません。目安として、横向きA4で20列を超える表は、期間を分ける・項目を減らす・2シートに割るのいずれかで、列数そのものを減らします。縮小率を上げて詰め込む方向には行かないでください。
提出用と作業用を分ける
もう1つ、資料の作り方として決めておくことがあります。提出用のPDFと、社内で使う作業用のファイルを分けることです。
作業用には、バージョン表記、確認チェックリスト、「見積ベース概算・最終見積で差し替え」のような注記が入ります。これらは社内では必要ですが、提出用PDFに残っていると読み手を迷わせます。上記の事業計画書でも、銀行提出用は表紙のバージョン表記とチェックリストのシートを外した9ページの別ファイルとして生成し、10シートの作業用Excelとは分けました。
提出用を出す前の確認は、次の5点で足ります。
- ページ数がシート数と一致している
- 各ページの向きが指定どおりになっている
- フォントが意図した書体で出ている
- 長文セルが途中で切れていない
- 合計欄の数字が元データと一致している(数式が再計算されたかの確認)
このうち1〜2点目は機械で確認でき、3〜5点目は表紙と数表1枚を目視すれば足ります。HTMLから作ったPDFの文字切れを数値で見つける方法はHTMLから作ったPDFで文字が切れて消えるときに、複数店舗分のPDFを毎月まとめて出す構成は店舗ごとの月次レポート作成を自動化するにまとめています。
起こりうる失敗と、先に打っておく手
| 起こりうる失敗 | 先に打っておく手 |
|---|---|
| 横長の表が2ページに割れる | 倍率を「幅に合わせる」ではなく「ページに合わせる」にする |
| 表紙まで横向きで出る | シートごとに縦横を指定して1枚ずつ書き出す |
| 書き出したPDFのフォントが明朝に変わる | Excel側でNoto Sans JPを指定してから取り込む |
| 備考の長文が途中で切れる | 行の高さを固定せず自動にする |
| 連続書き出しの途中で失敗する | 1枚ごとに間隔を空け、429は待って再試行する |
| 縦横の指定漏れに気づかない | 結合後にページ幅(595/842)を確認する |
| 作業用の注記が提出先に渡る | 提出用ファイルを別に生成する |
| Excelの無人操作が途中で止まる | 無人実行はスプレッドシートの書き出しに寄せる |
よくある質問
Q. Excelだけで1ページに収めることはできませんか
できます。「ページレイアウト」→「拡大縮小印刷」で横1ページ×縦1ページを指定し、シートごとにPDFで保存すれば同じ結果になります。シートが少なく、提出が1回きりならこの方法で十分です。シートが多い、修正のたびに出し直す、複数案件で同じ構成を使う、のどれかに当てはまる場合に、スプレッドシートへ持っていく価値が出ます。
Q. 自動化にサービスアカウントは必須ですか
手作業なら不要です。スプレッドシートを開き、シートごとに「ファイル」→「ダウンロード」→「PDF」で書き出せば、同じ設定が画面から選べます。サービスアカウントが要るのは、人がブラウザを開かずに書き出したい場合だけです。まずは手作業で1回通し、同じ資料を3回以上出し直すようになったら自動化を検討してください。
Q. 表計算ではなく、HTMLや文書から作るPDFでも同じ考え方ですか
1ページに収めるという目的は同じですが、方法が違います。表計算は倍率で自動的に縮みますが、HTMLから作るPDFは自動では縮まず、本文の文字サイズと余白を自分で決めて、溢れを検出する必要があります。1ページものの費用一覧のような資料は、本文9ポイント台・余白10〜12mmで組んで、溢れを数値で確認する方法を取っています。
まとめ
- 1ページ収めは、倍率「ページに合わせる」+シートごとの縦横+1シート1ページの書き出しで揃う。幅や高さだけに合わせない
- シートが多い・出し直しが多いならスプレッドシートで書き出す。Excelの無人操作は止まりやすい
- 自動化は書き出しURLで。倍率は
scale=4、連続取得は間隔を空け、1枚ごとにページ数を確認する - フォントはNoto Sans JP、行高は自動。書き出す前にExcel側で直す
- 提出用と作業用を分ける。注記とチェックリストは提出用に載せない
- 確認は、ページ数・向き・フォント・切れ・合計の5点。前の2つは機械で、残りは目視で
事業計画書や資金計画を出す場面は、開業や増店のたびに来ます。書き出しの手順を一度固定しておけば、数字が変わっても同じ品質で出し直せます。銀行に出す資料の中身は美容室開業の融資資料は何を出すかに、自己資金の考え方は美容室開業の自己資金はいくら必要かにまとめています。表計算資料のPDF化や、事業計画書の作成についての相談はお問い合わせからどうぞ。