Excelの印刷ページ数がPCによって違う?原因はDPIスケーリングだった【レジストリで解決】
はじめに
Excelで作成した帳票を印刷すると、自分のPCでは2ページになるのに、同僚のPCでは1ページに収まる。
同じファイル、同じプリンターなのに結果が違う――この現象に数年間悩まされた末、ようやく根本原因と解決策にたどり着いた記録です。
環境
| 項目 | 内容 |
|---|---|
| OS | Windows 10/11(VPC環境) |
| Office | Microsoft 365 x64(Excel 16.0) |
| ディスプレイ拡大率 | 150%(問題発生)/ 100%(正常) |
| プリンター | Canon Generic Plus LIPSLX |
症状
- テスト仕様書の表紙シート(39行、A4縦)が2ページに分割される
- 同僚のPCでは同じファイルが1ページで印刷される
- どのプリンターに変えても結果は同じ(Canon実機、Microsoft Print to PDF、他すべて2ページ)
- Excel上の改ページプレビューで確認すると、37行目付近に自動改ページが入る
調査の過程(失敗→成功の道のり)
❌ 試行1:プリンタードライバー更新
- 古いドライバー(v101.02、2017年)を最新版(v3.40.0.0)に更新
- 結果:変わらず → プリンタードライバーは原因ではなかった
❌ 試行2:印刷可能領域とマージンの分析
- プリンターの印刷可能領域:5.08mm余白
- シートのマージン:上20mm、下15mm
- コンテンツ高さ:526.5pt(185.7mm)に対し、利用可能領域:496.1pt(175.0mm)
- 約10.7mmオーバーフローしているが、これはどのPCでも同じ条件
- 同僚のPCでは1ページに収まる → マージンだけの問題ではない
❌ 試行3:フォントの違い?
- 自分のPC:「游ゴシック」、同僚:「本文のフォント」
- 調査すると「本文のフォント」はExcelのテーマフォント表示名で、実体は同じ游ゴシック
- 結果:フォントも原因ではなかった
✅ 転機:同僚との環境比較
唯一の違いが判明:
| 項目 | 自分のPC | 同僚のPC |
|---|---|---|
| ディスプレイ拡大率 | 150% | 100% |
✅ 検証:DPIスケーリングを100%に変更
- ディスプレイ拡大率を100%に変更
- Excelを完全に終了して再起動(←ここ重要!)
- → 1ページで印刷された!
根本原因
Excelの内部的なページ分割(改ページ)計算が、WindowsのDPIスケーリング値に影響される。
- 100%(96 DPI)では行の高さのピクセル丸め処理により1ページに収まる
- 150%(144 DPI)では同じ丸め処理の結果が異なり、わずかにオーバーフローして2ページになる
- まったく同じファイル・同じ設定でも、DPIが違うだけで印刷結果が変わる
これはMicrosoftの既知バグで、英語圏のMicrosoft Q&Aでは2018年から79件以上の報告があるが、Microsoftは「再現できない」として未修正のまま。
解決策:DPIUNAWAREレジストリ設定
「デスクトップは150%のまま使いたいが、Excelの印刷は正しくしたい」場合の解決策。
方法1:レジストリ設定(推奨)
PowerShellを管理者権限で実行:
# Excel.exeのパスを確認
$excelPath = "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
# DPIUNAWARE設定を追加
$regPath = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force
}
Set-ItemProperty -Path $regPath -Name $excelPath -Value "DPIUNAWARE" -Type String
方法2:GUIから設定
-
EXCEL.EXEを右クリック → プロパティ - 互換性タブ → 高DPI設定の変更
- 「高いDPIスケーリングの動作を上書きします」にチェック
- 拡大縮小の実行元:**「システム」**を選択
- OK → OK
設定の意味
| 設定値 | 動作 |
|---|---|
DPIUNAWARE |
アプリケーションは常にシステムDPI(96)で動作。OSがビットマップスケーリングで拡大表示 |
HIGHDPIAWARE |
アプリケーションが自分でDPIを処理(Excelのデフォルト) |
DPIUNAWAREにすると、Excelは内部的に96 DPI(=100%相当)で動作するため、改ページ計算が100%環境と同じ結果になる。
元に戻す場合
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" `
-Name "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
重要な注意点
⚠️ DPI変更後はExcelの再起動が必須
Excelは起動時にDPI値を取得してキャッシュする。
Excelを開いたままDPI設定を変更しても反映されない。
必ず:
- Excelをすべてのウインドウ含めて完全終了
- DPI設定を変更(またはレジストリ設定を適用)
- Excelを再起動
これを知らないと「100%に変えたけどダメだった」と誤判断してしまう(実際にハマった)。
⚠️ VPC(仮想PC)環境の場合
ディスプレイ拡大率の変更は**ホスト側(大元の端末)**で行う必要がある。
VPC内のディスプレイ設定ではなく、接続元の物理PCの設定が影響する。
⚠️ DPIUNAWAREの副作用
- Excelの表示が若干ぼやける可能性がある(ビットマップスケーリングのため)
- 筆者の環境(150%)ではぼやけは発生しなかった
- 気になる場合は元に戻せる(上記のロールバックコマンド参照)
なぜこの問題は検索で見つからないのか
-
症状の検索キーワードがずれる
「Excel 印刷 2ページになる」で検索すると、余白・縮小印刷・改ページプレビューのTipsばかりヒット -
DPIスケーリングが原因という発想に至りにくい
印刷の問題 → プリンター・ドライバー・Excel設定を疑うのが自然 -
「100%にしてもダメ」の罠
Excel再起動なしだと効果が出ないため、正解の手前で引き返してしまう -
環境依存で再現が難しい
Microsoft自身も「再現できない」→ 100%環境でテストしていた可能性大 -
日本語での情報がほぼゼロ
DPIUNAWAREレジストリ解決策は日本語圏で確認できる記事なし(2026年4月時点)
環境確認スクリプト
同僚と設定を比較する際に使えるPythonスクリプト:
import ctypes, winreg, subprocess
# DPIスケーリング取得
dpi = ctypes.windll.user32.GetDpiForSystem()
scaling = round(dpi / 96 * 100)
print(f"DPI: {dpi} (スケーリング: {scaling}%)")
# DPIUNAWARE設定確認
try:
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers")
excel_path = r"C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"
value, _ = winreg.QueryValueEx(key, excel_path)
print(f"Excel互換性設定: {value}")
except FileNotFoundError:
print("Excel互換性設定: なし(デフォルト)")
# Excelバージョン確認
try:
result = subprocess.run(
['reg', 'query',
r'HKLM\SOFTWARE\Microsoft\Office\ClickToRun\Configuration',
'/v', 'VersionToReport'],
capture_output=True, text=True)
for line in result.stdout.splitlines():
if 'VersionToReport' in line:
print(f"Excelバージョン: {line.split()[-1]}")
except Exception:
print("Excelバージョン: 取得失敗")
まとめ
| 項目 | 内容 |
|---|---|
| 問題 | 同じExcelファイルなのにPCによって印刷ページ数が異なる |
| 原因 | Windowsのディスプレイ拡大率(DPIスケーリング)がExcelの改ページ計算に影響 |
| 解決策 | レジストリでDPIUNAWAREを設定し、Excelを96 DPIで動作させる |
| 注意 | 設定変更後はExcelの完全再起動が必須 |
| 影響 | デスクトップの拡大率はそのまま維持できる |
この記事は、数年間解決できなかった問題をAI(GitHub Copilot)との協働調査で解決した実体験に基づいています。
調査日:2026年4月14日