シートの印刷設定を別のシートにコピーする2021.04.01
あるシートの印刷設定を、別のシートにコピーするマクロです。
印刷範囲や余白、倍率を別のシートに設定するのは面倒・・・。
そのような時に使用します。
「定数」のシートの名前を設定し、マクロを実行するだけです。
※印刷設定を行うマクロは 一般的なマクロより実行完了までに時間を要します
【お薦め】マクロ・プロシージャを管理する無料のツール!
Excelマクロ管理ツール
Excelマクロ管理ツール
サンプルコード2021.04.01
Sub Copy_PageSetup_1() '「Sheet1」の印刷設定を「Sheet2」にコピーする '定数 Const conShA As String = "Sheet1" '印刷設定を参照するシートの名前 Const conShB As String = "Sheet2" '印刷設定を行いたいシートの名前 Dim myPSA As PageSetup Dim myPSB As PageSetup Set myPSA = Worksheets(conShA).PageSetup Set myPSB = Worksheets(conShB).PageSetup Application.PrintCommunication = False With myPSB .PrintTitleRows = myPSA.PrintTitleRows 'タイトル行 .PrintArea = myPSA.PrintArea '印刷範囲 .LeftHeader = myPSA.LeftHeader 'ヘッダー .CenterHeader = myPSA.CenterHeader .RightHeader = myPSA.RightHeader .LeftFooter = myPSA.LeftFooter 'フッター .CenterFooter = myPSA.CenterFooter .RightFooter = myPSA.RightFooter .LeftMargin = myPSA.LeftMargin '余白 .RightMargin = myPSA.RightMargin .TopMargin = myPSA.TopMargin .BottomMargin = myPSA.BottomMargin .HeaderMargin = myPSA.HeaderMargin .FooterMargin = myPSA.FooterMargin .PrintHeadings = myPSA.PrintHeadings '行列番号の印刷 .PrintGridlines = myPSA.PrintGridlines '枠線の印刷 .PrintComments = myPSA.PrintComments 'コメントの印刷 .CenterHorizontally = myPSA.CenterHorizontally '水平中央設定 .CenterVertically = myPSA.CenterVertically '垂直中央設定 .Orientation = myPSA.Orientation '印刷向き .Draft = myPSA.Draft '簡易印刷 .PaperSize = myPSA.PaperSize '用紙サイズ .FirstPageNumber = myPSA.FirstPageNumber '先頭ページ番号 .Order = myPSA.Order 'ページ番号付けの方向 .BlackAndWhite = myPSA.BlackAndWhite '白黒印刷 .Zoom = myPSA.Zoom '倍率 .PrintErrors = myPSA.PrintErrors 'エラーセルの印刷表記方針 End With Application.PrintCommunication = True End Sub
・「印刷設定を参照するシートの名前」
印刷設定コピー元のシートの名前です。環境に合わせ適宜変更してください。
・「印刷設定を行いたいシートの名前」
印刷設定を行うシートの名前です。環境に合わせ適宜変更してください。
次のコードは、アクティブブック全てのワークシートに、あるシートの印刷設定をコピーものするです。
※一般的なマクロより実行完了までに時間を要します
Sub Copy_PageSetup_2() 'アクティブブック全てのシートに印刷設定をコピーする '定数 Const conShA As String = "Sheet1" '印刷設定を参照するシートの名前 Dim myPSA As PageSetup Set myPSA = Worksheets(conShA).PageSetup Dim Sh As Worksheet Application.PrintCommunication = False For Each Sh In ActiveWorkbook.Worksheets If Sh.Name <> conShA Then With Sh.PageSetup .PrintTitleRows = myPSA.PrintTitleRows 'タイトル行 .PrintArea = myPSA.PrintArea '印刷範囲 .LeftHeader = myPSA.LeftHeader 'ヘッダー .CenterHeader = myPSA.CenterHeader .RightHeader = myPSA.RightHeader .LeftFooter = myPSA.LeftFooter 'フッター .CenterFooter = myPSA.CenterFooter .RightFooter = myPSA.RightFooter .LeftMargin = myPSA.LeftMargin '余白 .RightMargin = myPSA.RightMargin .TopMargin = myPSA.TopMargin .BottomMargin = myPSA.BottomMargin .HeaderMargin = myPSA.HeaderMargin .FooterMargin = myPSA.FooterMargin .PrintHeadings = myPSA.PrintHeadings '行列番号の印刷 .PrintGridlines = myPSA.PrintGridlines '枠線の印刷 .PrintComments = myPSA.PrintComments 'コメントの印刷 .CenterHorizontally = myPSA.CenterHorizontally '水平中央設定 .CenterVertically = myPSA.CenterVertically '垂直中央設定 .Orientation = myPSA.Orientation '印刷向き .Draft = myPSA.Draft '簡易印刷 .PaperSize = myPSA.PaperSize '用紙サイズ .FirstPageNumber = myPSA.FirstPageNumber '先頭ページ番号 .Order = myPSA.Order 'ページ番号付けの方向 .BlackAndWhite = myPSA.BlackAndWhite '白黒印刷 .Zoom = myPSA.Zoom '倍率 .PrintErrors = myPSA.PrintErrors 'エラーセルの印刷表記方針 End With End If Next Application.PrintCommunication = True End Sub
・「印刷設定を参照するシートの名前」
印刷設定コピー元のシートの名前です。環境に合わせ適宜変更してください。