途中で切れて2ページ目にずれ込まないように表を1ページに収める方法、印刷時に繰り返し出したいヘッダーやフッターのさまざまな設定、改ページによるずれ込みを防ぐための「印刷範囲」の固定、「印刷タイトル」(見出し)の固定、「印刷プレビュー」の表示、印刷の実行方法などを解説【Windows 10、Excel 2016に対応】。
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説する本連載「Excelマクロ/VBAで始める業務自動化プログラミング入門」。今回はExcelの「印刷処理」について解説する。
Excelを使っている以上は、印刷は必ず行う作業だ。というよりも、日本で行われる「業務」には文書の印刷処理が必ずついて回るといっても過言ではない。ペーパーレス化が推進されている昨今だが、まだまだ印刷処理はなくならないだろう。
印刷処理をマクロ化しておくと、手作業での印刷設定がなくなり、作業効率も格段にアップする。
例えば、筆者はExcelを使って工程表を作成していたことがあるが、その頃はVBAをやったことがなかったので、印刷設定などは全て手作業で行っていた。毎日同じ表を印刷するのであれば、一度マクロを作成しておいてボタンに登録しておけば、今回のようにボタンクリック1回で必要な表の印刷ができたのだ。
「作業効率も格段にアップしていただろうな」と今さらながらに思う。ぜひ、読者の皆さまには、今回紹介するマクロを応用して印刷処理の自動化を目指してほしい。
印刷を設定する際に一番面倒なのが、1ページ目の途中で切れて、少しのデータだけが2ページ目にずれ込んでしまったときだ。そういった場合は1ページに収めるために縮小して印刷する。この処理をVBAでやってみよう。かなり使用頻度の高い処理だと思う。
シートにページ設定を行うオブジェクトは「PageSetUp」だ。
図1のように少しだけA4用紙の2ページ目にずれ込んでいる表がある。この表は「社員売上金額」という「シート名」を付けている。
この表をA4の1ページに収めるにはリスト1のマクロを書く
Option Explicit Sub 印刷時に1ページに収める() With Worksheets("社員売上金額").PageSetup .Orientation = xlPortrait .Zoom = False .FitToPagesTall = 1 .FitToPagesWide = 1 End With Worksheets("社員売上金額").PrintPreview End Sub
表を1ページに収めるには、FitToPagesTallとFitToPagesWideプロパティを使用する。書式は下記の通りだ。
PageSetUpオブジェクト.FitToPagesTall
PageSetUpオブジェクト.FitToPagesWide
FitToPagesTallプロパティは、ワークシートを印刷するときに、縦何ページ分で収めるかを示す値を設定する。FitToPagesWideプロパティは、ワークシートを印刷するときに、横何ページ分で収めるかを示す値を設定する。
FitToPagesTall/FitToPagesWideプロパティには、用紙の縦横を1ページに収めるように設定する。
Orientationプロパティには、ワークシートを印刷する場合のページの方向を設定する。ここでは、「xlPortrait」を設定して「縦モード」で印刷するよう設定している。「横モード」で印刷する場合は「xlLandscape」を設定する。
リスト1の9行目に出てくるPrintPreviewの書式は下記の通りだ。
オブジェクト.PrintPreview([ページ設定]ボタンの使用可をTrue|Falseで設定)
引数にTrueを設定すると、印刷時の[ページ設定]ボタンの使用が可能になる。Falseを設定すると使用は不可となる。省略した場合はTrueを設定したのと同じになる。各自が「PrintPreview(False)」と設定して確認するといいだろう。
オブジェクトには、Workbook、Worksheet、Chartオブジェクト、またはSheets、WorkSheets、Charts、Rangeコレクションを設定可能だ。
「印刷プレビュー」というボタンを作っておいて、リスト1のマクロを登録する。実行すると、図2のように表示される。PrintPreviewの引数には何も設定していないので、Trueを設定したことと同じになり、[ページ設定]ボタンの使用が可能になっている。
図2の右図を見ると分かるが「印刷プレビュー」というボタンまで入ってしまっている。この「印刷プレビュー」というボタンを外したい場合は、印刷範囲の外にボタンを配置しておけば、ボタンは印刷されない。
次ページでは、ヘッダーやフッターの設定方法を見てみよう。
Copyright © ITmedia, Inc. All Rights Reserved.