「範囲を選んで印刷」はどんな場面で利用する?
宛名印刷の自動化は非常に便利ですが、「一部だけ印刷したい」という要望も少なくありません。
たとえば、
- 今日発送分だけ印刷したい
- 特定の顧客だけに案内を送りたい
といったシーンでは、全件印刷ではなく 指定した範囲のみ を対象にする方法が効果的です。
ExcelとVBAを使って、選択した範囲のデータだけを印刷用シートに転記して印刷する方法を解説します。
必要な準備
今回も、前回の全て印刷の時と同じ、2つのシートを使います。
- 「データ」シート:宛名情報が一覧で入っているシート
- 「印刷用シート」:1件分の宛名レイアウトを印刷するシート
印刷したい行を選択してからマクロを実行するという流れになります。
やることの意味と効果
- ユーザーが印刷対象を選べるので、柔軟に対応できる
- 一部だけ印刷したいときに無駄がない
- 「全件印刷」マクロとの使い分けが可能
コードの例:選択した範囲だけ印刷する
Sub AddressPrinting_Selection()
Dim wsData As Worksheet
Dim wsTemplate As Worksheet
Dim cell As Range
Set wsData = Worksheets("データ")
Set wsTemplate = Worksheets("印刷用シート")
Application.ScreenUpdating = False
For Each cell In Selection.Columns(1).Cells
If cell.Row > 1 Then ' 1行目(タイトル行)は飛ばす
wsTemplate.Range("A2").Value = wsData.Cells(cell.Row, 2).Value ' 氏名
wsTemplate.Range("A3").Value = wsData.Cells(cell.Row, 3).Value ' 郵便番号
wsTemplate.Range("A4").Value = wsData.Cells(cell.Row, 4).Value ' 住所
wsTemplate.PrintOut ' 印刷を実行
End If
Next cell
Application.ScreenUpdating = True
MsgBox "選択された行の印刷が完了しました。"
End Sub
コードのポイント
- For Each cell In Selection.Columns(1).Cells:選択した範囲のA列のセルを1つずつ順番に処理していきます。
- 「For Each」は、複数のセルやオブジェクト(今回はセル)を順番に繰り返し処理を行う構文です。
- この場合、選択された範囲の中でA列にある各セルが cell という変数に入り、1件ずつ印刷用の処理を行います。
- If cell.Row > 1:タイトル行(1行目)をスキップします
- 指定された行のB列(氏名)、C列(郵便番号)、D列(住所)を印刷用シートに転記します
使用手順
- 「データ」シートで、印刷したい行(A列)をマウスで選択
- マクロを実行
- 選んだデータだけ印刷される
マクロをボタンに割り当てておけば、さらに操作が簡単になります。
まとめ
VBAを使えば、宛名印刷の柔軟性がぐっと高まります。
- 一部のデータだけを選んで印刷できる
- 作業ミスや手間を減らせる
- 現場で実際に役立つ、現実的な自動化の手段になる
まずは基本的な印刷マクロを理解した上で、このような応用も取り入れてみてください。
選択範囲だけの印刷は、手軽で実務的なVBAの活用方法のひとつです。
コメント