エクセルで作っている住所録や顧客管理で葉書やお礼状などを作成する時に、宛名などをリストにしたかって順番に自動的に次々と印刷出来たら、いちいち自分で入力しなくていいので、作業効率化できますよね。
エクセルからワードで差し込み印刷は簡単にできるけど、エクセルからエクセルってどうやるんだろうって思いませんでしたか?
そこでVBAを使ってリストに従って順番に印刷できるようにしてみました。
宛名などタックシールに印刷して貼り付ける作業してましたが、自動連続差し込み印刷ができたので、もう必要が無くなるので大幅な作業時間が短縮できました。
ここに記載したVBAコードはコピペして自由に使ってもらっても構いませんよ。
自動差し込みをつくろう
エクセルからエクセルへの差し込み印刷をVBAを使って自動連続でリストを差し替えながら印刷ってものすごく難しそうに思いますが、実はそんなに複雑なVBAコードはありませんよ。
印刷のイメージはこんな順番で考えて、そのままVBAコードに書き換えるだけですよ!
- リストの1番~リスト最終まで以下の作業を繰り返し行う
- リスト1番から必要な情報(名前や企業名など)を指定したセルに転記する
- 印刷を実行する
- 印刷が終わったら次のリスト2番以降も繰り返す
ワークシートの準備
住所録などすでに使っているエクセルファイルをそのまま使いますので、エクセルからエクセルへの自動差し込み印刷をVBAで作るといっても、新たに何かすることはほぼありません。
唯一追加したのが、印刷を繰り返して行う為のリストの数を把握する数式だけです。
追加したのはセルA1の数式で、A列にデータが入力されている数を数える式です。
+1にしているのはリストが2行目からスタートしている為です。
サンプル画像には518となっているので、リストの数は518人となり差し込み印刷は1人目~518人目で行数で言うと2行目から519行目ってことになりますね。
コマンドボタンにVBAコードを記述
すでにユーザーフォームを使っている場合は、差し込み印刷用のコマンドボタンを1つ追加してください。
追加したコマンドボタンにVBAコードを書きますが、サンプルとして下記のように顧客IDと顧客名をリストより差し込みます。
顧客IDはリストのA列、名前は列にあり、用紙に印刷する場所は用紙のA2とA3に指定します。
エクセルからエクセルへ差し込み印刷って最初はとんでもなく難しいVBAコードが必要だと思っていましたが、それほど難しいものではなかったので、今では無駄な作業が無くなってボタン1つで一瞬でできちゃうので重宝していますよ。
差し込み印刷に使うVBAコード
実は、エクセルからエクセルへの差し込み印刷では、様々な印刷関連VBAコードを組み合わせて出来上がっています。
2行目はメッセージ関連のVBAコードで誤操作防止のために「はい」と「いいえ」を選択してから次の作業に入るようにしています。
3行目は「はい」が押された時にプログラムを実行して、「いいえ」が押されたら終了するというVBAコードを使っています。
If~Thenは頻繁に使う事になるので、マスターしておきたいVBAコードですね。
そして4行目からエクセルからエクセルへの差し込み印刷をするための重要なVBAコードで、1人目のデータを取得したら印刷して、次に2人目のデータを取得して印刷と、次々に繰り返す為の処理を書いています。
繰り返し処理もマスターすれば非常に便利で、できることが増えていくのでマスターしたいVBAコードです。
最後に登録人数は変化するので、常に同じ値ではありませんのでわざわざ数えて入力することは面倒です。
入力されているセルの値を取得して印刷開始・印刷終了・印刷枚数を自動的に割り当てできるようにしなくてはいけません。
こんな感じで、ひとつひとつバラバラになっているVBAコードを、つなぎ合わせてみたら、エクセルからエクセルへの差し込み印刷もできるようになりますよ。
皆様もぜひ挑戦してみてくださいね。
参考までに、残ながらVBAではプリンターの両面印刷の設定はできませんのでVBAでダイヤログボックスを呼び出して行いましょう。
両面印刷以外にも共有パソコンなどでは、一度設定しても最後に印刷したエクセルファイルのデータで印刷されてしまう事があります。
用紙サイズ・用紙の向き・余白の設定などは、決まっていると思うので印刷ボタンにVBAコードを追加して書き込んでおけば安心ですよ。
- プリンター自体の機能設定画面を一発表示
- 印刷プレビュー
- 印刷開始ページ・終了ページ・枚数設定(セル連動)
- 印刷範囲を指定する
- 用紙の向きを指定する
- 用紙サイズを指定する
- 印刷ページの余白を設定する
- ページ番号を自動付与(ヘッダー・フッターの設定)
- ヘッダーに日付や社名を自動表記
- 印刷倍率を指定する
- 印刷倍率を自動調整する
- VBA白黒印刷設定でインクやトナーを節約して印刷
- 印刷時にDIV/0!や#N/Aのエラー値は自動的に空欄変換
- エクセルからエクセルへ差し込み印刷
- 印刷枚数入力テキストボックス付きVBA印刷フォーム
- 入力漏れ自動チェック機能付き印刷コマンドボタン
差し込み印刷の元データ作成
住所録の作成
エクセルで管理している顧客名簿や住所録のデータを活用して、差し込み印刷を行う作成例をご紹介しましたが、そもそもの顧客名簿や住所録をどのように作っていますか?
データ入力はもちろん、検索やデータ修正が素早くできなければ、作業効率が上がりません。
ユーザーフォームを活用して全て一瞬で検索・修正ができるように住所録を作りませんか?
〇丸印なども付け加えて差し込み印刷(オートシェイプ)
カレンダーやテストの結果が表示されるセルの部分に〇印をつけて連続差し込み印刷なんて技もやってみたくなりませんか?
あらかじめ、リストに情報を付け加えて置けば、自動的に読み取って〇印つけられるようになりますよ!