はシート毎に6箇所もあって、後付けがめんどくさいので、あるディレクトリ以下に存在するEXCELファイルの全ファイル全シートのヘッダフッタを一括で置換するEXCELマクロを組んでみた。
以下ソースにおいて、
txtLeftHeadSize〜txtRightFootSizeが、各ヘッダ/フッタのフォントの大きさを入力するためのテキストボックス。
chkLeftHead〜chkRightFootが、各ヘッダ/フッタの置換の有無を入力するチェックボックス。
txtLeftHeadValue〜txtRightFootValueが各ヘッダ/フッタのフォントの内容を入力するためのテキストボックス。
txtFolderが該当のフォルダを指定するためのテキストボックス。
動作としては、
1)該当ファイル(拡張子が.xls)のファイルを開く
2)デフォルトのシート名を保存
3)全てのシートのヘッダ/フッタを置換
4)デフォルトのシートへ移動
5)上書き保存
6)1)へ
を行っているだけ。
Dim lLoop As Long Dim strFName As String Dim strSheetName As String Dim wbBook As Workbook Dim wsSheet As Worksheet Dim fLeftHead As Boolean '置換の有無 Dim fCenterHead As Boolean Dim fRightHead As Boolean Dim fLeftFoot As Boolean Dim fCenterFoot As Boolean Dim fRightFoot As Boolean Dim sngLeftHead As Single '置換後のフォントサイズ Dim sngCenterHead As Single Dim sngRightHead As Single Dim sngLeftFoot As Single Dim sngCenterFoot As Single Dim sngRightFoot As Single Dim strLeftHead As String '置換後の内容 Dim strCenterHead As String Dim strRightHead As String Dim strLeftFoot As String Dim strCenterFoot As String Dim strRightFoot As String fLeftHead = chkLeftHead.Value fCenterHead = chkCenterHead.Value fRightHead = chkRightHead.Value fLeftFoot = chkLeftFoot.Value fCenterFoot = chkCenterFoot.Value fRightFoot = chkRightFoot.Value sngLeftHead = IIf(IsNumeric(txtLeftHeadSize.Value), CSng(txtLeftHeadSize.Value), 11) sngCenterHead = IIf(IsNumeric(txtCenterHeadSize.Value), CSng(txtCenterHeadSize.Value), 11) sngRightHead = IIf(IsNumeric(txtRightHeadSize.Value), CSng(txtRightHeadSize.Value), 11) sngLeftFoot = IIf(IsNumeric(txtLeftFootSize.Value), CSng(txtLeftFootSize.Value), 11) sngCenterFoot = IIf(IsNumeric(txtCenterFootSize.Value), CSng(txtCenterFootSize.Value), 11) sngRightFoot = IIf(IsNumeric(txtRightFootSize.Value), CSng(txtRightFootSize.Value), 11) strLeftHead = txtLeftHeadValue.Value strCenterHead = txtCenterHeadValue.Value strRightHead = txtRightHeadValue.Value strLeftFoot = txtLeftFootValue.Value strCenterFoot = txtCenterFootValue.Value strRightFoot = txtRightFootValue.Value '指定ディレクトリイのファィル全部読み込み開始 If Right(txtFolder.Text, 1) <> "\" Then txtFolder.Text = txtFolder.Text & "\" End If strFName = Dir(txtFolder.Text & "*.XLS", vbNormal) lLoop = 0 Do While strFName <> "" strSheetName = ActiveSheet.Name Workbooks.Open txtFolder.Text & strFName 'シートヘッダフッタ置換 For lCnt = 1 To Workbooks(Workbooks.Count).Worksheets.Count Workbooks(Workbooks.Count).Worksheets(lCnt).Activate With ActiveSheet.PageSetup If fLeftHead Then .LeftHeader = "&" & sngLeftHead & " " & strLeftHead End If If fCenterHead Then .CenterHeader = "&" & sngCenterHead & " " & strCenterHead End If If fRightHead Then .RightHeader = "&" & sngRightHead & " " & strRightHead End If If fLeftFoot Then .LeftFooter = "&" & sngLeftFoot & " " & strLeftFoot End If If fCenterFoot Then .CenterFooter = "&" & sngCenterFoot & " " & strCenterFoot End If If fRightFoot Then .RightFooter = "&" & sngRightFoot & " " & strRightFoot End If End With Next lLoop = lLoop + 1 For lCnt = 1 To Workbooks(Workbooks.Count).Worksheets.Count If Workbooks(Workbooks.Count).Worksheets(lCnt).Name = strSheetName Then Workbooks(Workbooks.Count).Worksheets(lCnt).Activate Exit For End If Next Workbooks(Workbooks.Count).Close SaveChanges:=True strFName = Dir() Loop If lLoop = 0 Then MsgBox "対象ファイルが見つかりませんでした", vbInformation Else MsgBox lLoop & "件のファイルヘッダ・フッタを置換しました", vbInformation End If