こんにちは、Ryoです。
印刷範囲に対して多少超えてしまっているような場合は強制的に1ページ内に収めて印刷することも多いと思います。VBAでもFitToPagesTall/FitToPagesWideプロパティを利用することで指定ページに収めることができますので、今回はその内容について書いていきます。
1.サンプル概要
Sheet1にデフォルト(A4)の印刷範囲を超えた表をサンプルとして作成しています。超えている部分はF列と43~46行の部分になります。
この状態で印刷プレビューを実行すると、当然ながら範囲を超えているので印刷枚数としては4枚となります。
≪1枚目≫
≪2枚目≫
≪3枚目≫
≪4枚目≫
この状態に対し、縦横1ページに収まるようサンプルコードを実行して印刷プレビューを行うと、この通り1ページに収まります。
以上がサンプル概要になります。
2.サンプルコード
Sub Sample1() 'Sheet1に対する処理 With Worksheets("Sheet1") 'Zoom表示を無効 .PageSetup.Zoom = False '縦方向を1ページに収める .PageSetup.FitToPagesTall = 1 '横方向を1ページに収める .PageSetup.FitToPagesWide = 1 '印刷プレビューの実行 .PrintPreview End With '※ サンプル動作なのでプレビューとしていますが、 ' 印刷実行であれば .PrintOut でOKです。 End Sub
このように印刷範囲を指定ページ数に収めるにはFitToPagesTall/FitToPagesWideプロパティを利用します。
構文:オブジェクト.FitToPagesTall/FitToPagesWide = expression
FitToPagesTallプロパティ=縦方向、FitToPagesWideプロパティ=横方向を利用して印刷範囲を指定したページ数に収めることができます。
サンプルコード中でPageSetup.Zoom = False としているのは「Zoomプロパティが設定されているとFitToPagesTall/Wideプロパティが無効」となるので、最初にZoomを無効にしています。
実行すると「Sheet1」を縦横1ページに収まるよう設定し印刷プレビューを実行します。
3.まとめ
印刷する際に強制的に収めてしまう方が何かと処理しやすいことも多いので、知っておくと利用する頻度も高くなるのではないかと思います。
内容的にもプロパティの役割自体を知っておけば難なく使用できますので、利用機会があればご検討くださいませ。
以上、印刷範囲を指定ページ数に収めて印刷する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo