【VBA】印刷・PDF化用にグラフを整形する方法(配置・拡大・余白)

Excel のグラフはそのままだと印刷時に
「小さすぎて読めない」「余白が不自然」「位置がズレる」
といった問題が発生しがちです。

VBA を使えば、印刷に最適化されたグラフの配置・サイズ・余白調整 を
完全に自動化できます。


1. 印刷用にグラフを拡大・配置する基本操作

まずは、印刷向けにグラフを見やすくするための
位置・サイズの設定 を扱います。

▼ グラフの位置とサイズを変更するコード

Sub FormatChartForPrint()
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    
    Set ws = Sheets("Sheet1")
    Set chartObj = ws.ChartObjects("売上グラフ") '←グラフ名を指定

    With chartObj
        '位置(mm単位)
        .Left = 20    '左余白
        .Top = 40     '上余白
        
        'サイズ(mm単位)
        .Width = 450  '幅
        .Height = 250 '高さ
    End With
End Sub

▼ ポイント

  • Left / Top:配置位置を調整
    用紙の左上からどの位置に置くかを決める。
  • Width / Height:グラフサイズを明確に指定
    印刷時の見やすさが大きく変わる。

mm ではなくポイント単位で動く点に注意
(1ポイント ≒ 0.35mm)


2. 印刷ページの余白・方向の設定

印刷(PDF化含む)用レイアウトでは
ページ設定(余白・向き・拡大/縮小) が非常に重要。

以下の設定を自動化できます。

▼ ページ余白を最適化(狭め or 標準)

With ActiveSheet.PageSetup
    .LeftMargin = Application.InchesToPoints(0.5)
    .RightMargin = Application.InchesToPoints(0.5)
    .TopMargin = Application.InchesToPoints(0.7)
    .BottomMargin = Application.InchesToPoints(0.7)
End With

余白の目安(一般的な印刷物)

  • 左右:0.5 inch(12.7mm)
  • 上下:0.7 inch(18mm)

グラフを大きく見せたい場合は余白を狭くすると効果的。


3. 用紙方向・サイズを指定(横向きの方がグラフ向き)

レポートの場合、横向きの方がグラフは見やすいことが多いです。

With ActiveSheet.PageSetup
    .Orientation = xlLandscape      '横向き
    .PaperSize = xlPaperA4          'A4サイズ
End With

縦向きにしたい場合は xlPortrait


4. グラフを印刷用に“ページ中央配置”する

Excelでは、印刷プレビューの
「中央に配置(水平/垂直)」も VBA で制御できます。

With ActiveSheet.PageSetup
    .CenterHorizontally = True
    .CenterVertically = False
End With

印刷時にグラフが妙に端に寄る問題を防止できます。


5. PDF化するときの自動処理(グラフ整形 → PDF出力)

レポート作成でよくあるのが
「毎回、サイズ調整 → PDF保存 するのが面倒」
というパターン。

以下のコードで 整形 + PDF出力 を一括処理できます。

Sub PrintChartPDF()
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")

    'グラフ整形
    Dim chartObj As ChartObject
    Set chartObj = ws.ChartObjects("売上グラフ")

    With chartObj
        .Left = 30
        .Top = 40
        .Width = 480
        .Height = 300
    End With

    'ページ設定
    With ws.PageSetup
        .Orientation = xlLandscape
        .PaperSize = xlPaperA4
        .LeftMargin = Application.InchesToPoints(0.5)
        .RightMargin = Application.InchesToPoints(0.5)
        .TopMargin = Application.InchesToPoints(0.6)
        .BottomMargin = Application.InchesToPoints(0.6)
        .CenterHorizontally = True
    End With

    'PDF出力
    ws.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\グラフ報告書.pdf", _
        Quality:=xlQualityStandard

    MsgBox "PDF出力が完了しました。"
End Sub

このマクロを使えば、

  1. グラフのレイアウト調整
  2. 余白・方向などのページ設定
  3. PDF保存

がワンボタンで終わります。


6. 複数グラフを自動整列・自動拡大する(応用)

「複数のグラフを等間隔・同サイズにしたい」
「報告書用に見やすく並べたい」

という場合は、以下のようにループして自動整列できます。

Sub AutoArrangeCharts()
    Dim ws As Worksheet
    Dim i As Long
    Dim leftPos As Double: leftPos = 20
    Dim topPos As Double: topPos = 30
    Dim width As Double: width = 350
    Dim height As Double: height = 220
    Dim space As Double: space = 40
    
    Set ws = ActiveSheet

    For i = 1 To ws.ChartObjects.Count
        With ws.ChartObjects(i)
            .Left = leftPos
            .Top = topPos
            .Width = width
            .Height = height
        End With
        
        '下へ並べていく
        topPos = topPos + height + space
    Next i
End Sub

大量のグラフをレポート用に整形する際に絶大な効果があります。


7. まとめ

印刷・PDF化を前提にグラフを整えるポイントは次の通りです。

テーマ内容
グラフサイズ調整Width / Height で大きく読みやすく
位置(Left / Top)印刷位置を固定しレイアウト崩れを防ぐ
余白設定左右 0.5inch、上下 0.6〜0.7inch が安定
用紙方向グラフは横向き(xlLandscape)が見やすい
PDF出力レイアウト調整 → PDF保存を一括自動化
複数グラフ整列ループで等間隔・同サイズに揃える

コメント

タイトルとURLをコピーしました