エクセルシート印刷時に、控も同時印刷するマクロ
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
別案
後から見たら、シートをコピーして追加して控を書き込んで印刷してからコピーしたシートを削除すれば良いのではと思った。