こんにちは、Ryoです。
普段Excelで印刷対象の余白設定を行う場合、ページ設定から上下左右の余白をポイント指定することで行いますが、VBAではCentimetersToPointsメソッドを利用することでcm(センチメートル)単位での指定を行うことができますので、今回はこの内容について書いていきたいと思います。
1.サンプル概要
一例として簡易的な表を適当に作成していますが、この表を印刷する際に上余白/下余白/左余白を3cm、右余白を2cmと設定して印刷プレビューを実行します。
印刷プレビューを実行すると設定した余白が反映された状態になっています。この状態では実寸がわかりませんが、印刷して確認してみると設定通り上下左余白は3cm、右余白は2cmとなっていましたのでセンチメートル単位での指定はできています。
2.サンプルコード
Sub sample1() 'ページの余白をセンチメートル単位で設定 'Sheet1に対する処理を実行 With Worksheets("Sheet1") '「上余白」を 3cm 設定 .PageSetup.TopMargin _ = Application.CentimetersToPoints(3) '「下余白」を 3cm 設定 .PageSetup.BottomMargin _ = Application.CentimetersToPoints(3) '「左余白」を 3cm 設定 .PageSetup.LeftMargin _ = Application.CentimetersToPoints(3) '「右余白」を 2cm 設定 .PageSetup.RightMargin _ = Application.CentimetersToPoints(2) '印刷プレビューを実行 '(参考)印刷する場合は .PrintOut Copies:=1 .PrintPreview End With End Sub
このようにページ余白をセンチメートル単位で設定するにはCentimetersToPointsメソッドを利用します。
構文:オブジェクト.CentimetersToPoints num
CentimetersToPointsメソッドはポイントをセンチメートルに変換するメソッドで、以前に投稿したセルサイズをセンチメートル指定する内容と同様です。
このメソッドで指定した数値がセンチメートル単位になりますので、サンプルコードで指定している(3)は3cm、(2)は2cmとなっています。
上余白の指定はTopMarginプロパティ、下余白はBottomMarginプロパティ、左余白はLeftMarginプロパティ、右余白はRightMarginプロパティをそれぞれ使用します。
後は印刷プレビューを表示して終了していますが、印刷を実行する場合は .PrintOut Copies:=1とすれば1部印刷を実行できますのでご参考までに。
3.まとめ
私の場合はVBAで処理したデータを指定様式に落とし込み、印刷を実行するような処理をすることが多々ありますので、余白設定も本記事のような形でcm指定するケースが多いです。
使用メソッドのCentimetersToPointsはセルサイズのみではなく、このように余白設定にも利用できるという点をしっておくと、印刷処理の幅も広がるので良いかと思います。
以上、ページ余白設定をセンチメートル単位で指定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo