今日のネタは、ちょっとケチケチした内容です。
封筒やハガキのあて名書きをするとき、直接印刷せずにラベルシールに印刷してから貼り付けている方に向けた記事です。
ラベルシールって、8面とか12面とか印刷できるようになっているのですが、印刷するたびに余りますよね。
そんなとき、どうしてますか?
住所を一面だけ印刷して、あと11面余っているラベルシール。捨てられませんよね。
今日は、この余ってしまうラベルシールを有効活用する方法をご紹介します。
ただし、ラベルシールメーカーの立場から言うと、プリンター内で詰まるなどの不具合の原因になる恐れがあるそうですから、自己責任でお願いします。
住所録テーブルを作る
まず、住所録のテーブルを作ります。公開されている住所ということで、都道府県庁の住所を使うことにしました。
テーブル名は、「住所録」です。
フィールド名 | データ型 |
---|---|
都道府県コード | 短いテキスト(フィールドサイズ2) |
郵便番号 | 短いテキスト(フィールドサイズ7) |
住所 | 短いテキスト(フィールドサイズ255) |
宛名 | 短いテキスト(フィールドサイズ255) |
住所録テーブルのデータ(2020年1月31日現在)
都道府県コード | 郵便番号 | 住所 | 宛名 |
---|---|---|---|
01 | 0608588 | 札幌市中央区北3条西6-1 | 北海道庁 |
02 | 0308570 | 青森市長島1-1-1 | 青森県庁 |
03 | 0208570 | 盛岡市内丸10-1 | 岩手県庁 |
04 | 9808570 | 仙台市青葉区本町3-8-1 | 宮城県庁 |
05 | 0108570 | 秋田市山王4-1-1 | 秋田県庁 |
06 | 9908570 | 山形市松波2-8-1 | 山形県庁 |
07 | 9608670 | 福島市杉妻町2-16 | 福島県庁 |
08 | 3108555 | 水戸市笠原町978-6 | 茨城県庁 |
09 | 3208501 | 宇都宮市塙田1-1-20 | 栃木県庁 |
10 | 3718570 | 前橋市大手町1-1-1 | 群馬県庁 |
11 | 3309301 | さいたま市浦和区高砂3-15-1 | 埼玉県庁 |
12 | 2608667 | 千葉市中央区市場町1-1 | 千葉県庁 |
13 | 1638001 | 新宿区西新宿2-8-1 | 東京都庁 |
14 | 2318588 | 横浜市中区日本大通1 | 神奈川県庁 |
15 | 9508570 | 新潟市中央区新光町4-1 | 新潟県庁 |
16 | 9308501 | 富山市新総曲輪1-7 | 富山県庁 |
17 | 9208580 | 金沢市鞍月1-1 | 石川県庁 |
18 | 9108580 | 福井市大手3-17-1 | 福井県庁 |
19 | 4008501 | 甲府市丸の内1-6-1 | 山梨県庁 |
20 | 3808570 | 長野市大字南長野字幅下692-2 | 長野県庁 |
21 | 5008570 | 岐阜市藪田南2-1-1 | 岐阜県庁 |
22 | 4208601 | 静岡市葵区追手町9-6 | 静岡県庁 |
23 | 4608501 | 名古屋市中区三の丸3-1-2 | 愛知県庁 |
24 | 5148570 | 津市広明町13 | 三重県庁 |
25 | 5208577 | 大津市京町4-1-1 | 滋賀県庁 |
26 | 6028570 | 京都市上京区下立売通新町西入薮ノ内町 | 京都府庁 |
27 | 5408570 | 大阪市中央区大手前2-1-22 | 大阪府庁 |
28 | 6508567 | 神戸市中央区下山手通5-10-1 | 兵庫県庁 |
29 | 6308501 | 奈良市登大路町30 | 奈良県庁 |
30 | 6408585 | 和歌山市小松原通1-1 | 和歌山県庁 |
31 | 6808570 | 鳥取市東町1-220 | 鳥取県庁 |
32 | 6908501 | 松江市殿町1 | 島根県庁 |
33 | 7008570 | 岡山市北区内山下2-4-6 | 岡山県庁 |
34 | 7308511 | 広島市中区基町10-52 | 広島県庁 |
35 | 7538501 | 山口市滝町1-1 | 山口県庁 |
36 | 7708570 | 徳島市万代町1-1 | 徳島県庁 |
37 | 7608570 | 高松市番町4-1-10 | 香川県庁 |
38 | 7908570 | 松山市一番町4-4-2 | 愛媛県庁 |
39 | 7808570 | 高知市丸ノ内1-2-20 | 高知県庁 |
40 | 8128577 | 福岡市博多区東公園7-7 | 福岡県庁 |
41 | 8408570 | 佐賀市城内1-1-59 | 佐賀県庁 |
42 | 8508570 | 長崎市尾上町3-1 | 長崎県庁 |
43 | 8628570 | 熊本市中央区水前寺6-18-1 | 熊本県庁 |
44 | 8708501 | 大分市大手町3-1-1 | 大分県庁 |
45 | 8808501 | 宮崎市橘通東2-10-1 | 宮崎県庁 |
46 | 8908577 | 鹿児島市鴨池新町10-1 | 鹿児島県庁 |
47 | 9008570 | 那覇市泉崎1-2-2 | 沖縄県庁 |
アクセスに組み込まれているラベルシール情報
では、住所等をレポートに出力してまいりましょう。
一から作る方法もありますが、今日は、あらかじめアクセスに組み込まれている市販のラベルシール情報を活用して、ラベルシールを作りました。
リボンの「作成」-「レポート」-「宛名ラベル」と指定します。
このとき、レポートのもとになるテーブル又はクエリをいったんクリックしてからでないと、選択できませんので、注意してください。
宛名ラベルウィザードが起動しました。和休が良く使っている、エーワンの28915を使います。
2列×6行で12面あるラベルシールです。
ラベルに出力したい項目を選択して次へ。
レポートの並び順を指定します。今回は、都道府県コード順にしました。
では、ラベルのプレビューで、出来栄えを確認してみましょう。
こんな感じで、出来上がりました。
文字の大きさとか配置とかは、後ほどお好きなようにカスタムしてみてください。
レポートを操作するVBAコード
次に、レポートにコードを埋め込みます。
レポートの読み込み時イベントに、次のコードを記述します。
Option Compare Database
Option Explicit
Dim kaishiNO As Variant
Dim LPcnt As Long
Private Sub Report_Load()
'印刷を始めるラベル位置を指定
kaishiNO = InputBox("何番目から印刷しますか?")
'ループカウンターをリセット
LPcnt = 1
End Sub
レポートを開くと、インプットボックスが何番目から印刷するか聞いてきます。
インプットボックスに入力した数字(1~12)に対応して、ラベルの印刷開始位置を変更します。
なお、ラベルの印刷順は、次の表のとおりです。
1 | 2 |
3 | 4 |
5 | 6 |
7 | 8 |
9 | 10 |
11 | 12 |
続いて、レポートの詳細部分のフォーマット時イベントにコードを記述してください。
なお、テキストボックスの名称は、次のように指定しています。
- 郵便番号=txt_郵便番号
- 住所=txt_住所
- 宛名=txt_宛名
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
'インプットボックスが入力されなかったときのエラー回避
kaishiNO = Nz(kaishiNO, 1)
'ラベルシートの面数より小さい数または大きい数が指定されたら処理中止
If kaishiNO < 0 Or kaishiNO > 12 Then Exit Sub
'ループカウンターと印刷を開始するラベル位置を比較
If LPcnt >= kaishiNO Then
'ループカウンターが印刷を開始するラベル位置以上であればテキストボックスを表示し、
'次のレコードへ NextRecord = True
Me.txt_郵便番号.Visible = True
Me.txt_住所.Visible = True
Me.txt_宛名.Visible = True
NextRecord = True
Else
'そうでないときはテキストボックスを非表示
'次のレコードへ進まない NextRecord = false
Me.txt_郵便番号.Visible = False
Me.txt_住所.Visible = False
Me.txt_宛名.Visible = False
NextRecord = False
End If
'ループカウンターをカウントアップ
LPcnt = LPcnt + 1
End Sub
ループカウンターの値が、レポートを開いたときに指定したラベル番号以上となったときは郵便番号等を表示し、そうでないときは非表示にする、という内容になっています。
ただ、そのままでは非表示にした住所の印刷がスキップされてしまいますので、
NextRecord = False
を設定することで、次のラベルにも同じ内容を出力しています。
郵便番号等が表示されれば、通常どおり、次のラベルに次のレコードの内容を出力します。
実際に使ってみましょう
レポートを開くと、インプットボックスが出現しますので、印刷を開始したいラベルシールの位置を入力してください。
なお、1~12以外の数字を入力すると、1を指定したとみなします。
このように、3番目のラベルシールから印刷が始まりました。
重ね重ねになりますが、ラベルシールのメーカーは、プリンター詰まりの原因となることから、途中からの印刷を推奨しません。
会社のプリンターを詰まらせたりしないように、ご注意くださいネ。
コメントをどうぞ!