印刷設定を変更するのもVBAを使用すれば一括で処理できる
細かい変更が必要な印刷設定も、VBAを利用すると一括で操作することが可能で、VBAで操作することで煩わしい印刷の作業の手間を大幅に改善することができます。
今回は印刷設定を変更するVBAコードを紹介します。
印刷設定をするためのプロパティ・メソッド一覧
Excelのワークシートの印刷設定には下記のようなプロパティがあります。
①Orientation:印刷の向き
xlPortraitに設定すると用紙の向きを縦に、xlLandscapeに設定すると用紙の向きを横に設定します。
②Zoom:拡大、縮小
ページを拡大印刷・縮小印刷するときに設定します。
③FitToPagesTall・FitToPagesWide:何ページに印刷するか
用紙を縦横何枚で印刷するか設定します。
この設定を使用する際は②ZoomをFalseに指定します。
④PrintArea:印刷範囲
印刷範囲を設定するときに使用します。
通常「= ”A1:D8”」のようにA1形式で範囲を選択しますが、繰り返し処理などでCells(i ,1)などを使用したい場合、Addressプロパティを使用することもできます。
私はAddressプロパティを使用して設定することが多いです。
Falseを指定したり、「= ””」のように空白を指定すると印刷範囲が削除されます。
⑤PrintPreview:プレビュー表示
印刷プレビューを表示するVBAコードになります。
PrintPreview(True)とするとページ設定ボタンが使用できる状態でプレビュー画面が立ち上がり、PrintPreview(False)とするとページ設定ボタンが使用できない状態でプレビュー画面が表示されます。
これらの設定を一つずつVBAで記述していくことで印刷設定を行います。
①~④の設定は「PageSetup」プロパティの下流に設定するために、Withステートメントでまとめるのが一般的です。
他にもヘッダー・フッターの設定などもっとたくさんの設定があります。
スポンサーリンク
印刷設定VBAのサンプルコード
印刷設定でよく使うものの例を以下に載せておきます。
Sub 印刷設定1()
’A1:AJ82の範囲を1ページ横向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
.PrintArea = “A1:AJ82”
End With
ActiveSheet.PrintPreview (True)
End Sub
’A1:AJ82の範囲を1ページ横向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
.PrintArea = “A1:AJ82”
End With
ActiveSheet.PrintPreview (True)
End Sub
Sub 印刷設定2()
’A1:AJ82の範囲を150%のサイズで縦向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlPortrait
.Zoom = 150
.PrintArea = “A1:AJ82”
End With
ActiveSheet.PrintPreview (True)
End Sub
’A1:AJ82の範囲を150%のサイズで縦向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlPortrait
.Zoom = 150
.PrintArea = “A1:AJ82”
End With
ActiveSheet.PrintPreview (True)
End Sub
Sub 印刷設定3()
’Cells(1, 1)~Cells(82, 35)の範囲を1ページ横向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
.PrintArea = Range(Cells(1, 1), Cells(82, 35)).Address
End With
’Cells(1, 1)の形式で指定すると変数が使えるので便利
ActiveSheet.PrintPreview (True)
End Sub
’Cells(1, 1)~Cells(82, 35)の範囲を1ページ横向きにして印刷
With ActiveSheet.PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesTall = 1
.FitToPagesWide = 1
.PrintArea = Range(Cells(1, 1), Cells(82, 35)).Address
End With
’Cells(1, 1)の形式で指定すると変数が使えるので便利
ActiveSheet.PrintPreview (True)
End Sub
コメント