PR
スポンサーリンク

【ExcelVBA】印刷ページ数の設定(1ページに収める、改ページ設定を行う)

スポンサーリンク
エクセルVBA-印刷ページ設定_改ページ設定をする方法-アイキャッチ 印刷設定・ページ設定
スポンサーリンク
スポンサーリンク
スポンサーリンク

印刷ページ設定とは

まず手動で設定するときの手順です。
エクセルの「ページ設定」画面を開くときは下の手順で設定画面を開きます。

ファイル⇒印刷⇒ページ設定の順に開きます。
ページ設定ウィンドウの中には「ページ」「余白」「ヘッダー/フッター」「シート」のタブがあります。

印刷ページ設定画面
スポンサーリンク

マクロでページ設定(PageSetup)を行うときの書き方

マクロでページ設定の値をセットする際は、プリンタ接続を一旦オフに設定し、ページ設定を行う内容はWithステートメントで囲んで書く方法がおすすめです。

1行だけならWithで囲まなくても問題ないですが、ページ設定は複数の項目を一度に設定したい場合が多いです。複数の項目を設定する場合はWithステートメントで囲んで記述した方が動作が早くなり見た目にもスッキリとしてメンテナンスしやすくなるメリットがあります。

‘プリンタ接続をオフにする
Application.PrintCommunication = False

 ’ページ設定を行う
  With ActiveSheet.PageSetup
   ここに設定したい内容を記述する
  End With

‘プリンタ接続をオンにする
Application.PrintCommunication = True

スポンサーリンク

ページ数を1ページに収めて印刷する方法

印刷するときページ数を1ページに収めて印刷したい、指定したページ数に収まるように印刷したい、という場合の設定方法です。

下のサンプルでは印刷プレビューをすると全体が2ページに分かれています。
これを1ページ収めるように設定を行います。

印刷プレビューで2ページ目まである状態の画像

サンプルマクロで実行している内容
①プリンタ接続をオフにする
②ページ設定を行う
③横のページ数を「1」に設定する
④縦のページ数を「1」に設定する
⑤プリンタ接続をオンにする

Sub sample1()

    'プリンタ接続をオフにする
    Application.PrintCommunication = False
    
    'ページ設定を行う
    With ActiveSheet.PageSetup
        
        '横のページ数を「1」に設定する
        .FitToPagesWide = 1
        
        '縦のページ数を「1」に設定する
        .FitToPagesTall = 1

    End With
    
    'プリンタ接続をオンにする
    Application.PrintCommunication = True
    
End Sub

マクロ実行後の印刷プレビュー画面です。
全体が縮小されて縦横1ページ内に収まりました。

マクロ実行後の印刷プレビュー画面の画像_1ページ内にすべて収まっている状態

マクロ実行前はデフォルトの設定で「拡大/縮小」にチェックがついて倍率が100%になっていましたが、実行後は「次のページ数に合わせて印刷」にチェックがついて横「1」×縦「1」になっています。

ページ設定画面の拡大縮小設定-マクロ実行前と実行後の画像
スポンサーリンク

マクロで改ページを設定する方法

マクロで改ページ設定を挿入する方法について説明します。

改ページを設定する場合は「PageBreak」を使用して「xlPageBreakManual」を設定します。

ActiveSheet.Rows(行を指定).PageBreak = xlPageBreakManual

たとえば100行目まである表があり、1ページ内に印刷タイトル1行とデータ行40行に収めて印刷したい場合で考えてみます。

次のサンプルマクロでは最終行を取得して、最終行が41行以上だったら40行ごとに改ページ設定を挿入しています。

サンプルマクロで実行している内容
①最終行を取得して変数にセット
②最終行が41行よりも大きい場合に以下を実施する
 (41行以内の場合は何もせずに終了する)
③42行目から最終行まで、40行ごとに繰り返す
④改ページを設定する

Sub sample1()

    Dim i As Integer
    Dim MaxRow As Integer

    '最終行を取得して変数にセットする ※1列目の最終行をセット …⓵
    MaxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
  
  '最終行が41行よりも大きい場合…⓶
    If MaxRow > 41 Then
    
    '42行目~最終行まで40行ごとに繰り返す…⓷
       For i = 42 To MaxRow Step 40
        
      '改ページを設定する…⓸
           ActiveSheet.Rows(i).PageBreak = xlPageBreakManual
    
       Next
       
    End If
    
End Sub

1ページに収めたい行数に応じて数字を変更して使用してください。

スポンサーリンク

印刷の向きを設定する方法

印刷するときに縦向きで印刷するか、横向きで印刷するかの設定方法は下のように記述します。

ページ設定ウィンドウでは「印刷の向き」という項目で指定します。

ページ設定の印刷の向きの設定画面の画像

マクロで指定する場合は「PageSetup.Orientation」を使用して縦向きか横向きかを設定します。

縦向きに設定する場合
ActiveSheet.PageSetup.Orientation = xlPortrait

横向きに設定する場合
ActiveSheet.PageSetup.Orientation = xlLandscape

スポンサーリンク

印刷時の拡大・縮小設定を指定する方法

拡大縮小印刷の%を指定する場合は↓のように記述します。

’80%に設定する場合
ActiveSheet.PageSetup.Zoom = 80

マクロ実行後のページ設定画面です。
拡大/縮小設定が「80」%になっていることが確認できます。

マクロ実行後の拡大縮小印刷の設定の画像
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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