ExcelからExcelへ差し込み自動印刷するマクロExcelを作ってみた

こないだ、久々にhuluで映画を観ました。
「ピッチ・パーフェクト」。
ミュージカル映画って結構すきなんです。
バーレスクとかシカゴとかヘアスプレーとか。ナインはストーリーがよくわかんなかったけど、歌の部分はよかったなあ。
ララランド観たいなあ。

ピッチパーフェクトはアメリカの大学のアカペラサークルを舞台にしたお話なんですが、昔の曲から新しい曲までたくさんでてきてとっても楽しい。
そして当たり前だけどみんな歌がうまくて、聞いてて楽しい!
今年の7月にシリーズ3作目がアメリカで公開されたんだとか。
まずは2だな。2を絶対に観よう。

主演のアナ・ケンドリックはどっかで見たことあるなあと思っていたら、トワイライトサーガシリーズに出ていたのね!
トワイライトサーガシリーズは映画も観たんだけど、原作のトワイライトにすごくはまって読んでました。
もう結構昔だなあ。懐かしい。

ExcelからExcelへ差し込み印刷できるマクロを作ってみた

Wordは差し込み印刷機能ってあるけど、ExcelからExcelへの差し込み印刷ってできないんですね。
なんでいきなりこんなこと書いてるのかというと、仕事でちょっと前に作ったから。
Excelで作った表に、スタッフ名を入れて自動印刷できるようにしたかったんです。
いままでは表だけ印刷してそこにハンコで名前を入れたり手書きで名前を書いたりしていたようなんですが、面倒だっていうことになって…。

難しいことになると全然できないわたしですが、なんとかかんとか見様見真似で。
インプットしたのでアウトプットしようと思い、記事にしてみました。
今回は例として出勤簿を印刷する形で作ってみましたが(出勤簿手書きってあんまりないですよね…)、スタッフごとの記録シートとか、商品ごとのシートなんかで使えるのかなあと思います。

↓こんなかんじ

  1. 1つのExcelブックの中に「スタッフマスタ(印字するスタッフのリスト)」と「印刷シート(実際に印刷するテンプレート)」の2枚のシートを作る(実際は同一シートの中でも作れますが)
  2. 「スタッフマスタ」のリストをVLOOKUP関数で「印刷シート」に表示させる
  3. 印刷用マクロを作成
  4. ボタンを作ってマクロを実行→「印刷シート」を「スタッフマスタ」のリストにある全員分自動的に印刷する

1.リストと印刷用テンプレートを作成する

上でも書いているように実際は同一シートの中でも作れますが、今回は元からあったシートが結構なボリュームで作ってあったので、操作しやすくするために別シートにすることにしました。

スタッフマスタ=印字したいスタッフ名のリスト
印刷シート=スタッフ名を入れて実際に印刷するシート です。

スタッフマスタで必要なのは、A列とB列だけ
A列には通し番号を、B列には印字したいスタッフ名を入力しておきます。
通し番号の順に印刷されるので、そのまま配ったりするのであればこの点を考慮してリストを作っておくと便利です。

印刷シートには、氏名と通し番号を表示させるスペースがあればあとはなんでもOKです。

2.VLOOKUP関数を使ってスタッフ名を印刷シートに表示させる

(あっなんかシート名:Sheet1とか書いてますね。間違いです。シート名は印刷シートです。)
今回作ったシートでは、J4セルに通し番号を、A4セルにスタッフ名を表示させています。
J4セルに入力した通し番号を、A4セルに入れたVLOOKUP関数で読んでスタッフ名を返す仕組みです。

A4セルに入っている関数式↓
=VLOOKUP(J4,スタッフマスタ!A:B,2)

今回は説明用にJ4セルの文字を見えるようにしていますが、わたしはこのセルの文字色を白にして使っています。
なんとなく見栄えの問題なんですが。

3.印刷用マクロを作成

これの元になったマクロは、ネットでどなたかが無料UPしてたのをいただいてきました。
ちょっとまえのことなのでどのブログからだったかすでにわからず…。
見つけたらリンクさせていただきたいと思います。

↓↓↓ここから↓↓↓

Sub 印刷()
Dim LastRow As Long
Dim i As Long
Dim myNo As Long

If vbNo = MsgBox(“印刷を開始していいですか?”, vbYesNo) Then Exit Sub

With Worksheets(“スタッフマスタ”)
LastRow = .Cells(.Rows.Count, “A”).End(xlUp).Row

For i = 1 To LastRow

myNo = .Range(“A” & i).Value

With Worksheets(“印刷シート”)
.Range(“J4”).Value = myNo
.PrintOut Copies:=1, Collate:=True
End With
Next i
End With

MsgBox “印刷が終わりました”

End Sub

↑↑↑ここまで↑↑↑

必要に応じてシート名の部分と、通し番号を入れているJ4セルの部分を変更します。

4.ボタンを作ってマクロを実行

スタッフマスタシートにマクロの実行ボタンを作成します。
これは実際にこのシートを使う方がマクロをあまり触れない方になっても大丈夫なようにつけるだけなので、別になくてもOK。
スタッフマスタシートに簡単なメンテ方法がいろいろ書いてあるのもこのためです(このシートは結構忠実に再現した)。

Excel差し込みマクロのダウンロードはここから

マクロの実行テストは、通常使うプリンターをPDF仕様にしておくのがおすすめです。
紙とインクがもったいないので。

まとめ

複雑なマクロを一から自分で組める人ってすごいなあ…って本当に思います。
いまの職場でも、60くらいの人が複雑なマクロ作ってたりするもんなあ。
二重に感心。
わたしも頑張らなくちゃなあと、その姿を見るたびに思います。
そんなこんなな今日この頃。