マクロの記録で印刷処理

作成したマクロをそのまま実行させるのも大変便利なのですが、印刷用のメソッドがマクロの記録でわかったので、少し加工して、例題を作ってみたいと思います。マクロを使ってお知らせを印刷することができるようになりました。

例題で作った「エレベータの定期点検」のお知らせを各家庭に配布したい時、お知らせの左上に配布したい家庭の名前を印刷して渡すとより効果があると思います。配布したい家庭の一覧表はExcelの表で持っているとします。表のなかの名前を取り出してお知らせの宛先の所に書いて印刷するマクロを、作ってみましょう。図8は宛名を追加したプレビュー画面です。

図8:宛名付き印刷プレビュー

配布一覧表は図9のようにしました。

図9:配布一覧表

以下が宛先を指定して印刷するマクロです。

[リスト3]haihu(印刷例題.xlsm印刷例題.xlsm)

'****************
'宛先を指定して印刷
Sub haihu()
    y = 3
    Sheets("配布家庭一覧表").Select        '(1)
    Do While Cells(y, 2) <> ""          '(2)
        s = Cells(y, 4) & "様(" & Cells(y, 3) & "号室)"   '「xxx様(***号室)」文字設定               '(3)
        Sheets("配布用").Select
        Cells(3, 1) = s         '名前設定   '(4)
        ActiveWindow.SelectedSheets.PrintOut Copies:=1 '印刷  '(5)
        Sheets("配布家庭一覧表").Select
        y = y + 1       '(6)
Loop
End Sub

Do While文(2)を使って一覧表のデータをすべて印刷します。まず変数yに一覧表のデータの先頭行である3を入れます。アクティブシートを”配布家庭一覧表”にして(1)、変数yで指定した行のデータを「xxx様(*号室)」の形にします(3)。印刷するために”配布用”のシートに移動して、宛名を設定(4)して印刷します(5)。行番号を一つ増やし(6)、これを一覧表のデータが無くなるまで繰り返します。

実際に入力して動かしてみてください。印刷がたくさん出るので、テストの時は、(5)を「ActiveWindow.SelectedSheets.PrintOut Copies:=1 , Preview:=1」と「Preview:=1」を追加して、プレビューで表示させるだけにしていると確認ができて、良いと思います。

マクロの記録で、毎日同じ操作をするものをまとめてマクロにし、作業の軽減を図ったり、作成されたマクロに手を加えて自分の思うようなマクロを作ったりとExcelで作業できる範囲が広がって行くと思います。Excelを極限まで使い倒すというのも面白いと思います。