クロネコメールの宛名ラベルに印刷するExcelツール(マクロなし)
今回は宛名ラベルの印刷ツールを作りました。印刷対象になるデータの範囲を設定したり、ラベルシート上の表示開始位置を設定し、ページを変えながら印刷することができます。サンプル

今回は、以前よくお世話になったクロネコメール便の専用宛名ラベルをテーマにしました。もちろん、ラベルの数や表示位置を調整すれば他のラベルにも転用可能です。


ポイントは、印刷の開始位置を自由に設定できる点です。
例えば、前回の印刷で先頭から7枚目までを使ったとすると、最後の8枚目が余ります。これを捨てるのはもったいないので、次回はこの8枚目から印刷したいですよね。
そこで、任意の位置から印刷を開始し、次のページからは先頭に戻って印刷するようにしました。

まず、シートを挿入し「宛名一覧シート」という名前を付けます。
「宛名一覧シート」に左のような宛名リストを作ります。(左の図は自動生成された架空の宛名リストです)
A1:D19 を「宛名リスト」という名前で定義しておきます。
左端の通し番号はIDとして利用します。

次に、シートを挿入し「宛名」という名前を付けます。
「宛名」シートの上部に値の設定をする部分を作ります。
左の要領で各セルに名前を定義します。
値の増減にはフォームコントロールのスピンボタンを利用してもいいですし、手入力でもかまいません。

続いて、「宛名」シートの下のほうに、宛名ラベルの位置に合わせて枠を作ります。
枠の中に郵便番号や住所など、必要な項目が表示できるようセルのサイズや表示形式を設定してください。
次が最大の難関です。各ラベルの左横に通し番号を表示させます。
下の図は、各ラベルの通し番号を導き出す式です。最終行(青枠の部分)が通し番号です。

一段目: 各ラベルの位置を表す番号1-8を入力しておきます。(基準値1)
二段目: 基準値1がページ数に合わせて変化するようにします。(基準値2)
三段目: 基準値2が印刷開始位置に合わせて変化するようにします。(通し番号)
四段目: 通し番号が印刷範囲内かどうかを判定し、範囲外の場合は空白にします。
図を参考にいろいろ試してみてください。もっとシンプルで合理的な方法があると思います。
あとは通し番号を基に、宛名リストから必要なデータを参照するだけです。
各セルに下のように式を入力します。

郵便番号を表示するB8を例にとって式の内容を説明します。
IF(ISERROR(VLOOKUP($A$10,宛名リスト, 3,FALSE)), "",VLOOKUP($A$10,宛名リスト, 3,FALSE))
少し複雑なので、重要な部分だけ取り出します。
VLOOKUP($A$10,宛名リスト, 3,FALSE)
$A$10に入っているのは通し番号です。この通し番号を、宛名リストの左端の列の列「番号」から探し、
一致した列の3列目の値つまり郵便番号の列の値を参照します。

あとは、ページを切り替えながら印刷するだけです。(切り替えと印刷のプロセスを自動化する場合は、マクロを組む必要があります)
今回はツールを自作しましたが、印刷作業を合理的に行う方法は他にもいろいろあります。運送会社が配布してるツールもとても便利ですし、DMなど大量に印刷する場合はワードの差し込み印刷を使う方がいいでしょう。
私の場合は、メール便が投函されたかどうかを確認したり、履歴を残したかったので、自作のマクロツールを通じてデータベースで管理していました。文面の内容や、バーコードから読み込んだ配達番号をデータベースに登録する結構手の込んだものでした。バーコードで顧客データを管理する方法はまた別の機会でご紹介したいと思います。