10/14/2021

Excel。VBA。印刷設定を毎回行うのは面倒なので手早く設定したい【Print settings】

Excel。VBA。印刷設定を毎回行うのは面倒なので手早く設定したい

<Excel VBA>

データを読み込んだり、ファイルを開いたりしたあとに、印刷する場合、様々な設定をしないといけません。


次のデータを用意しました。


印刷設定として、よく行う作業としては、


・横1ページに収めるようにする

・フッターに ページ数/総ページ数 を表示する

・2ページ目以降にも見出し行が印刷されるようにする


といったところでしょうか。

これらの処理を、毎回設定して印刷するというのは、面倒ですし、意外と設定に時間がかかります。

できることなら、手早く印刷したいところです。



そこで、Excel VBAでマクロをつくって、実行すると、手早く設定した状態で印刷することが出来るようになります。


本来ならば、2行程度が2ページ目に送られているので、1枚に収めると思いますが、今回は、フッターや見出し行が複数ページに印刷されるようになっているのか、確認したいので、2ページとしています。


プログラム文は、次のとおりです。

Sub 印刷設定()

    With ActiveSheet

        '横1ページに収める

        .PageSetup.Zoom = False

        .PageSetup.FitToPagesWide = 1

        .PageSetup.FitToPagesTall = False


        'フッター中央にページ番号

        .PageSetup.CenterFooter = "&P/&N"

        

        'タイトル行の設定

        .PageSetup.PrintTitleRows = "$1:$1"

        

        'プレビュー画面を表示

        .PrintPreview

    End With

End Sub


とりあえず、実行してみます。


横1ページに収めるようにする

フッターに ページ数/総ページ数 を表示する

2ページ目以降にも見出し行が印刷されるようにする


これらが、きちんと反映されています。


では、プログラム文を確認していきましょう。


With ActiveSheet ~ End With

アクティブのシートを印刷します。プログラム文に「ActiveSheet」と入力するのは、面倒なので、With文をつかって、省略させています。

プレビューを除いて、本来は、「With ActiveSheet.PageSetup」とするといいですね。


'横1ページに収める

.PageSetup.Zoom = False

.PageSetup.FitToPagesWide = 1

.PageSetup.FitToPagesTall = False


横は1ページに収めるようにさせるのが、このブロック。

.PageSetup.Zoom = False は、-拡大・縮小率を指定しないようにさせています。

.PageSetup.FitToPagesWide = 1 は、横方向1ページで印刷するように設定します。

.PageSetup.FitToPagesTall = False は、縦方向はそのまま自動で対応とします。1ページに収める場合は、「1」とします。


'フッター中央にページ番号

.PageSetup.CenterFooter = "&P/&N"

フッターの中央(CenterFooterプロパティ)に、「&P」のページ番号と区分けするための「/」と総ページ数の「&N」とすること、ページ数/総ページ数をフッター中央に表示することができます。


'タイトル行の設定

.PageSetup.PrintTitleRows = "$1:$1"

見出し行の1行目を設定しています。

これは、ページ設定ダイアログボックスのタイトル行を設定する作業そのものです。


 'プレビュー画面を表示

.PrintPreview

最後の、PrintPreviewをつかうことで、印刷プレビューで確認することができます。


たった、数行ですが、このマクロを実行することだけで、印刷設定を瞬時に完了することができます。