エクセルシート印刷時に、控も同時印刷するマクロ

1 機能

 Excelで作成したあるシートについて、正本だけでなく控えも必要な場合がある。控には控と分かるように表示したい。マクロなしで対応する方法もある。

(1)2部印刷して1部を控とする方法。控にする方に、「控」と書くか「控」のスタンプを押す。この事務量がかかるのが問題。

(2)出力する正本の様式と同じものを、同じシート内に連続して作成するか、別シートに作成する。控とするシートには、(控)と追記や図形を挿入したりしておく。そして、控とするシートの各セルが正本シートの各セルを参照するようにする。ただし、正本シートに結合セルがあったり、チェックボックスがあったりすると、それらを正本作成時にいじったとき、控に反映されないおそれがある。控の意味がないし、正本シートの構造を変えた都度控のシートや参照を作成し直したり、毎回正本と控が同一かチェックしたりするのは面倒。

(3)そこで、マクロでワンタッチで正本に「控」という表示を加えたものを出力する。

2コード

Sub 正本と控印刷()
    With ActiveSheet
        '正本1部印刷
        .PrintOut copies:=1
        '中央ヘッダーにたとえば、「section9控」と設定するなら
        .PageSetup.CenterHeader = "section9控"
        '控1部印刷
        .PrintOut copies:=1
        '中央ヘッダーを削除する
        .PageSetup.CenterHeader = ""
    End With
End Sub

 印刷したい正本シート上に、開発リボンの挿入からフォームボタンを設置して「正本控印刷」などと名前をつけて、上記マクロを登録すれば、ワンタッチで(たとえば正本と控を印刷できる。

 ヘッダーフッターのどの位置に記載するか、好みのフォントをどうやって記載するかは、マクロ記録してヘッダー設定してみて該当する行をコピペすれば十分。たとえば、マクロ記録してフォントサイズを20に設定してみれば、"&20section9控" と記載されることが分かるので、それに置換すればよい。

3 別コード

 上記2まで書いた後、自分がヘッダーフッダーに固執していることに気づいた。もともとセルA1に値が入っていないシートなら、A1に控と書けばいいし、シートの題名部分のセルを題名(控)と置き換えて印刷してから戻すだけでも良いなと思った。

 たとえば、セルA1に「控」を代入して印刷してから、セルA1を削除するとか、「連絡表」と記載されたセルの値を、「連絡表(控)」にして印刷してから、元の「連絡表」に戻すみたいな話。

 

Sub 正本と控印刷2()
    With ActiveSheet
        '正本1部印刷
        .PrintOut copies:=1
        'A1セルに「控」と設定
        .Range("A1").Value = "控"
        '控1部印刷
        .PrintOut copies:=1
        'A1セルの値を削除して元に戻す
        .Range("A1").Value = ""
    End With
End Sub

別案
後から見たら、シートをコピーして追加して控を書き込んで印刷してからコピーしたシートを削除すれば良いのではと思った。