Excelブックの余白を一括設定するVBAコード
環境
Microsoft 365
背景・概要
Excelブック内のすべてのシートの印刷余白を設定します。1ページに本文を多くでも納められるように、余白は見た目を損なわない範囲で可能な限り狭く取ります。
Excelの設定では狭い余白も指定できますが、上下の余白が大きすぎるため今回作成しました。
VBAコード
以下がソースコードです。シート本文の内容がヘッダー・フッターに被らないように併せて調整しています。
workbookオブジェクトを渡して使用ください。
' ワークブックのすべてのワークシートの余白を設定するマクロ
Public Sub setMargin(wb As Workbook)
' ワークシートオブジェクト宣言
Dim ws As Worksheet
' ワークブックに含まれる各ワークシートに対して処理を行う
For Each ws In wb.Worksheets
' PageSetupオブジェクトを使いマージンを設定
With ws.PageSetup
' 左余白:0.6cm
.LeftMargin = Application.CentimetersToPoints(0.6)
' 右余白:0.6cm
.RightMargin = Application.CentimetersToPoints(0.6)
' 上余白:0.9cm
.TopMargin = Application.CentimetersToPoints(0.9)
' 下余白:0.9cm
.BottomMargin = Application.CentimetersToPoints(0.9)
' ヘッダ余白:0.1cm
.HeaderMargin = Application.CentimetersToPoints(0.1)
' フッタ余白:0.1cm
.FooterMargin = Application.CentimetersToPoints(0.1)
End With
Next
End Sub
また、関連でフッターを設定するサンプルコードを記載します。
下記の例では、フッターにページ番号とファイル名、シート名を記載しています。
' ワークブックのすべてのワークシートのフッターを設定するマクロ
Public Sub setFooter(wb As Workbook)
' ワークシートオブジェクト宣言
Dim ws As Worksheet
' ワークブックに含まれる各ワークシートに対して処理を行う
For Each ws In wb.Worksheets
' PageSetupオブジェクトを使ってフッターを設定
With ws.PageSetup
' 中央のフッターにページ番号と総ページ数を設定(形式:1/10)
.CenterFooter = "&P/&N"
' 右のフッターにファイル名とワークシート名を設定(形式:[FileName_SheetName])
.RightFooter = "&F_&A"
End With
Next
End Sub
余談
暑い日が続いていますが常備のお茶が切れていたら以下からどうぞ。
更新履歴
2023/9/4 初版公開。