VBAで印刷設定をコピーする

Excelで特定シートの印刷設定を他のシートにもコピーしたかったのでマクロ化。

コピー対象の印刷設定

    ・印刷ヘッダ(左、中、右)

    ・印刷フッタ(左、中、右)



以下ソース

Sub ★印刷設定のコピー()

'------------------------------------------

'setPrintConfig

'ActiveSheetの印刷設定を他のシートにコピーする。

' 設定対象:印刷ヘッダ(左、中、右)、印刷フッタ(左、中、右)

'

'------------------------------------------

    

    Dim lh As String 'LeftHeader

    Dim ch As String 'centerHeader

    Dim rh As String 'rightHeader

    Dim lf As String 'LeftFooter

    Dim cf As String 'centerFooter

    Dim rf As String 'rightFooter

    

    Dim fS As Worksheet 'fromSheet

    Set fS = ActiveSheet

    

    lh = fS.PageSetup.LeftHeader

    ch = fS.PageSetup.CenterHeader

    rh = fS.PageSetup.RightHeader

    lf = fS.PageSetup.LeftFooter

    cf = fS.PageSetup.CenterFooter

    rf = fS.PageSetup.RightFooter

    

    Dim ms As String 'startMassage

    Call addMsg(ms, "印刷設定のコピーを開始します。")

    Call addMsg(ms, "")

    Call addMsg(ms, "コピー元シート:" + fS.Name)

    Call addMsg(ms, "コピーする設定:印刷ヘッダ(左・中・右)および印刷フッタ(左・中・右)")

    Call addMsg(ms, "")

    Call addMsg(ms, "コピー元シートの印刷設定を全てのシートにコピーします。よろしいですか?")

    

    Dim ans As Long

    ans = MsgBox(ms, vbOKCancel, "印刷設定のコピー")

    

    Select Case ans

    Case vbOK

        '処理なし

        

    Case vbCancel

        Exit Sub

        

    End Select

        

    Dim tS As Worksheet 'toSheet

    For Each tS In Worksheets

        If tS Is fS Then

            '処理なし

        Else

            '設定のコピー

            tS.PageSetup.LeftHeader = lh

            tS.PageSetup.CenterHeader = ch

            tS.PageSetup.RightHeader = rh

            tS.PageSetup.LeftFooter = lf

            tS.PageSetup.CenterFooter = cf

            tS.PageSetup.RightFooter = rf

        End If

    Next

    

    MsgBox "終了"

    

End Sub

Private Sub addMsg(msg As String, addMsg As String)

    msg = msg + addMsg + vbCrLf

End Sub


と、ここまで作ってから発見しましたが

ワークシートを複数選択して印刷設定を編集すれば、一括設定できる
という衝撃の事実が判明。セルを編集する時みたいにできるんですね。。。

複数ファイルまとめて設定できるように改造すれば、使えるかも・・・?