こんにちは、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

