エクセルで印刷の位置がずれたり、用紙からはみ出たり、必要ないページが印刷されたりして困ったことありませんか?
特に共有プリンターや複数プリンターが選択できる場合、さらに共有パソコンともなると、よくある日常です。
ここでは上下左右の余白をVBAで指定して、意図した位置で印刷できるようにします。
ページの余白を設定する
余白の設定は、エクセルのワークシートから「ファイル」➡「印刷」➡「ページ設定」➡「余白」の順に進むと設定できますが、VBAを使ってエクセルを管理しているのでついでに設定しておいて損は無いですよ。
いつものようにユーザーフォームに配置したコマンドボタンに余白無し「0」の設定を書いています。
ポイント単位で余白を上下左右0設定
Private Sub CommandButton1_Click()
With ActiveSheet.PageSetup
.TopMargin = (0)
.BottomMargin = (0)
.LeftMargin =(0)
.RightMargin = (0)
End With
End Sub
- コマンドボタン1がクリックされたら
- 現在表示中のシートのページ設定をする
- 上の余白を0ptにする
- 下の余白を0ptにする
- 左の余白を0ptにする
- 右の余白を0ptにする
- Withステートメント終了
- マクロ記録終了
センチ単位で余白を上下左右0設定
余白無しの0ならば、ポイント単位だろうがセンチ単位だろうが変わりませんが、余白を少しでも必要ならばポイント単位よりもセンチ単位の方が分かりやすいので、下記のようにApplication.CentimetersToPointsを付け加えればセンチ単位になります。
Private Sub CommandButton1_Click()
With ActiveSheet.PageSetup
.LeftMargin = Application.CentimetersToPoints(0)
.RightMargin = Application.CentimetersToPoints(0)
.TopMargin = Application.CentimetersToPoints(0)
.BottomMargin = Application.CentimetersToPoints(0)
End With
End Sub

印刷のページ設定をVBAで出来るのは用紙だけではありませんので、一緒に設定したほうが失敗印刷すなくて済みますよ。
印刷関連VBA
- エクセルからエクセルへ差し込み印刷
- 印刷プレビュー
- 枚数指定して印刷実行
- セル番地の値を取得して開始・終了ページ設定
- プリンター選択・設定
- 印刷範囲指定・選択中範囲印刷
- 用紙の向きを指定する
- 用紙サイズを指定する
- 印刷倍率を指定する
- 印刷倍率を自動調整に設定して1ページ内に収めて印刷
- インク・トナー節約設定
- ページ設定で上下左右の余白を指定する
- ヘッダーとフッターを指定する
- フッターの開始ページ数指定と総ページ数表示
- ヘッダー2行表示や日時表示
- 数式エラーを自動的に空白にして印刷する
- 入力漏れがあったら印刷を自動停止する