用紙1枚に収めて印刷

マクロ講座30回 
必須

Excel 2013マクロ講座30回 

用紙1枚に印刷設定するマクロ

シートを印刷した時に1枚に印刷するつもりが、ほんのわずかだけ2枚目に印刷されてしまったという失敗。
なんとも嫌なものですね。
用紙1枚に収めるには、ページ設定画面からできますが、これを今回はマクロにします。
(サンプルファイルは、こちらから 2013マクロ講座30回サンプルデータ

用紙1枚に印刷設定するマクロ

たとえば、ちょっとA4縦方向からはみ出しそうな表を1枚に収めて印刷したいとします。
用紙1枚に印刷する1
マクロの記録で作ってみます。記録開始ボタンをクリックします。
保存先は、個人用のブックが良いのですが、例では今回は作業中のブックです。
用紙1枚に印刷する2
ファイルタブをクリックしてバックステージビューを開き印刷をクリック。
用紙1枚に印刷する3
拡大縮小なしのドロップダウンメニューから、シートを1ページに印刷を選択します。
用紙1枚に印刷する4
マクロの記録終了ボタンをクリックして、マクロの記録を終了します。するとこのようなコードが記録されています。
用紙1枚に印刷する5

たくさん記録されていますが、目的に必要なものは、わずか数行です。
不要な行を削除してしまいます。
用紙1枚に印刷する6
必要なのは、横1×縦1です。
FitToPagesWideプロパティとFitToPagesTallの両方に1を指定しているので、シートがちょうど1ページに収まるように自動的に縮小されるのです。
Sub 用紙1枚に印刷設定プレビュー()
    With ActiveSheet.PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    Application.PrintCommunication = True
End Sub
    
「Application.PrintCommunication」プロパティは、Excel 2010から追加されプロパティで、PageSetupプロパティを設定するコードの実行を高速化するのですが、1枚に収めるようなケースでは、不要でしょう。
さらに記録されたマクロを実行しても、プレビュー最後に表示することができなかったので、ActiveSheet.PrintPreviewの1行を追加します。
Sub 用紙1枚に印刷設定プレビュー()
    With ActiveSheet.PageSetup
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
    ActiveSheet.PrintPreview
End Sub
    
印刷の設定がされてないシートでマクロを実行すると、1枚に収まるように設定されてプレビューが表示されます。
用紙1枚に印刷する7
今日の講義は以上です。お疲れ様でした。