Excelで複数のシートを印刷する場合、すべて同じ印刷設定ではなく、一部のシートだけ両面印刷にしたいケースがあります。例えば、シート1とシート4は片面印刷、シート2とシート3は表裏1セットとして両面印刷したい場合、VBAを使って印刷設定を自動化できます。この記事では、シートごとに印刷方法を切り替えながら指定した順番で出力する方法を解説します。
Excel VBAでシートごとに印刷設定を変更する考え方
Excel VBAでは、各ワークシートの印刷設定を個別に変更できます。ただし、Excel標準のVBAには「このシートだけ両面印刷」という直接的なプロパティはありません。
そのため、基本的にはプリンター側の両面印刷設定をVBAから変更しながら、シートごとに印刷処理を実行する方法を使用します。
また、シート2を表面、シート3を裏面として印刷したい場合は、シート2とシート3を同時に選択して印刷することで、プリンターの両面印刷機能を利用できます。
シート1から4まで順番に印刷するVBA例
以下は、シート1とシート4を片面印刷、シート2とシート3を両面印刷する流れのサンプルコードです。
Sub PrintSheetsCustom()
'シート1を片面印刷
Worksheets("Sheet1").PrintOut
'シート2とシート3を両面印刷
Worksheets(Array("Sheet2", "Sheet3")).Select
ActiveWindow.SelectedSheets.PrintOut
'選択解除
Worksheets("Sheet1").Select
'シート4を片面印刷
Worksheets("Sheet4").PrintOut
End Sub
このコードでは、シート2とシート3を同時に選択して印刷することで、1枚目をシート2、2枚目をシート3として両面印刷できる設定になります。
ただし、実際の両面印刷になるかどうかは使用しているプリンターの設定に依存します。プリンター側で自動両面印刷が有効になっている必要があります。
プリンターの両面印刷設定をVBAから変更する場合
プリンターによっては、VBAからプリンタ設定を変更することも可能です。ただし、メーカーやドライバーによって設定方法が異なるため、汎用的なコードはありません。
一般的には、プリンタードライバーの設定画面で両面印刷を有効にしておき、VBAでは印刷するシートの順番だけを制御する方法が安定します。
例えば、毎月作成する帳票で「表紙は片面、明細は両面、最後の確認ページは片面」というような場合は、印刷前にプリンター設定を確認してからマクロを実行するとミスを防げます。
シート名が違う場合のVBA変更方法
サンプルコードでは「Sheet1」「Sheet2」などの名前を使用していますが、実際のExcelファイルではシート名を変更していることがあります。
その場合は、以下の部分を実際のシート名に変更します。
Worksheets("Sheet2")
例えば「請求書」「明細表」「資料」「確認用」という名前なら、次のように指定できます。
Worksheets(Array("請求書", "明細表")).Select
シート名にスペースが含まれる場合でも、ダブルクォーテーションで囲めば問題ありません。
印刷順を間違えないための注意点
両面印刷では、印刷する順番が非常に重要です。シート2とシート3を逆順にすると、表裏が意図した向きにならない場合があります。
また、プリンターによっては短辺綴じ・長辺綴じの設定があるため、冊子のように仕上げたい場合はプリンター設定も確認してください。
例えば書類提出用の資料では、シート2を表紙側、シート3を裏面側として配置したい場合、Excel上のシート順だけでなく、実際の印刷結果を一度確認してから運用すると安心です。
まとめ
Excel VBAで一部のシートだけ両面印刷し、それ以外を片面印刷する場合は、シートを個別または複数選択して印刷処理を分ける方法が基本になります。
シート2とシート3を表裏セットで印刷したい場合は、2つのシートを同時選択して印刷し、プリンター側で両面印刷を有効にします。
VBAだけですべてのプリンター設定を制御することは難しいため、印刷設定とマクロを組み合わせて管理すると、複数シートの帳票印刷を効率化できます。


コメント