1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Excelの印刷ページ数がPCによって違う?原因はDPIスケーリングだった【レジストリで解決】

1
Posted at

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%に変更

  1. ディスプレイ拡大率を100%に変更
  2. Excelを完全に終了して再起動(←ここ重要!)
  3. 1ページで印刷された!

根本原因

Excelの内部的なページ分割(改ページ)計算が、WindowsのDPIスケーリング値に影響される。

  • 100%(96 DPI)では行の高さのピクセル丸め処理により1ページに収まる
  • 150%(144 DPI)では同じ丸め処理の結果が異なり、わずかにオーバーフローして2ページになる
  • まったく同じファイル・同じ設定でも、DPIが違うだけで印刷結果が変わる

これはMicrosoftの既知バグで、英語圏のMicrosoft Q&Aでは2018年から79件以上の報告があるが、Microsoftは「再現できない」として未修正のまま。

参考:Excel printing and display scaling bug - Microsoft Q&A

解決策: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から設定

  1. EXCEL.EXEを右クリック → プロパティ
  2. 互換性タブ → 高DPI設定の変更
  3. 「高いDPIスケーリングの動作を上書きします」にチェック
  4. 拡大縮小の実行元:**「システム」**を選択
  5. 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設定を変更しても反映されない。

必ず:

  1. Excelをすべてのウインドウ含めて完全終了
  2. DPI設定を変更(またはレジストリ設定を適用)
  3. Excelを再起動

これを知らないと「100%に変えたけどダメだった」と誤判断してしまう(実際にハマった)。

⚠️ VPC(仮想PC)環境の場合

ディスプレイ拡大率の変更は**ホスト側(大元の端末)**で行う必要がある。
VPC内のディスプレイ設定ではなく、接続元の物理PCの設定が影響する。

⚠️ DPIUNAWAREの副作用

  • Excelの表示が若干ぼやける可能性がある(ビットマップスケーリングのため)
  • 筆者の環境(150%)ではぼやけは発生しなかった
  • 気になる場合は元に戻せる(上記のロールバックコマンド参照)

なぜこの問題は検索で見つからないのか

  1. 症状の検索キーワードがずれる
    「Excel 印刷 2ページになる」で検索すると、余白・縮小印刷・改ページプレビューのTipsばかりヒット

  2. DPIスケーリングが原因という発想に至りにくい
    印刷の問題 → プリンター・ドライバー・Excel設定を疑うのが自然

  3. 「100%にしてもダメ」の罠
    Excel再起動なしだと効果が出ないため、正解の手前で引き返してしまう

  4. 環境依存で再現が難しい
    Microsoft自身も「再現できない」→ 100%環境でテストしていた可能性大

  5. 日本語での情報がほぼゼロ
    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日

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?