見出し画像

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 初版公開。


いいなと思ったら応援しよう!