#299 カスタマバーコードの作り方 レポート、VBA

「カスタマバーコード」は、日本郵政公社が定めたバーコード体系で、ダイレクトメールのような大口の郵便を差し出す場合に、これを印刷することで郵便料金を割り引いてもらうことができるものです。7桁の郵便番号は都道府県名や市町村名までを表しますが、カスタマバーコードは、それより下の何丁目何番地といったより詳しい住所情報までを含めます。

Accessでは、バーコードコントロールを使うことによって、レポートにカスタマバーコードを印刷することができます。バーコードコントロールのプロパティで「スタイル」を"10 - カスタマ バーコード"に設定し、コントロールソースに所定の住所データを指定します。

しかし、通常の住所を指定しただけでは、バーコードは印刷されません。あらかじめ、日本郵政公社が定めるルールに従って、郵便番号データと、住所からバーコード化する文字だけを抜き出したデータを組み立てておかなければなりません。ここでは、その抜き出しおよび組み立て方法を紹介します。
なお、カスタマバーコードの仕様としては、スタートコード/ストップコードやチェックデジットも必要ですが、これらの計算や付加はバーコードコントロールが行なってくれますので、プログラムとして必要な処理は、郵便番号と住所の文字変換処理だけです。


以下のコードは、引数に指定された住所(都道府県なども含む)から、バーコードに必要な文字情報だけを抜き出し、引数の郵便番号と組み合わせた結果を返すFunctionプロシージャです。
Public Function CreateCustomerBarCode(strZip As String, ByVal strAddress As String) As String

  Dim strRetZip As String
  Dim strRetAddress As String
  Dim strChar As String
  Dim blnConvFlg As Boolean   'ハイフンに置き換え済みフラグ
  Dim iintLoop As Integer

  '郵便番号にハイフンがあったら除外します
  strRetZip = Replace(strZip, "-", "", , , vbTextCompare)
  
  '住所の全角文字を半角に変換します
  strAddress = StrConv(strAddress, vbNarrow)
  '住所から数字部分だけを取り出してハイフンで区切ります
  strRetAddress = ""
  blnConvFlg = True '先頭の数字以外の文字は無視する設定
  For iintLoop = 1 To Len(strAddress)
    '1文字取り出し
    strChar = Mid$(strAddress, iintLoop, 1)
    If IsNumeric(strChar) Then
      '数字のとき
      strRetAddress = strRetAddress & strChar
      blnConvFlg = False
    Else
      'ハイフンに置き換え済みでないとき
      If Not blnConvFlg Then
        strRetAddress = strRetAddress & "-"
        blnConvFlg = True
      End If
    End If
  Next iintLoop
  '最後のハイフンを除去します
  If Right$(strRetAddress, 1) = "-" Then
    strRetAddress = Left$(strRetAddress, Len(strRetAddress) - 1)
  End If
  
  '変換された郵便番号と住所を結合して返します
  CreateCustomerBarCode = strRetZip & strRetAddress

End Function

一方、レポートにおいては、バーコードコントロールの「コントロールソース」プロパティを次のように設定します。CreateCustomerBarCodeプロシージャに、レコードソースのフィールドである"郵便番号"と"住所1"を渡して、その返り値をコントロールソースとします。
=CreateCustomerBarCode([郵便番号],[住所1])

実行結果のプレビュー例:
実行結果のプレビュー例


※上記サンプルコードは、基本的部分の一例です。いかなる住所(特にビルやマンションなど)にも対応できるような完璧なものではありません。あくまでも参考例として、応用の上、利用してください。
※カスタマバーコードによる料金割引の適用は、1,000通以上(郵便区内特別郵便物は100通以上)差し出されたものに限ります。
※カスタマバーコードが正確な仕様で印刷されているかどうか、引受の際に郵政公社の品質検査があります。
※より詳しい「バーコードに必要な文字情報の抜き出し法」については、郵政公社の『郵便番号制マニュアル』等を参照してください。 →
http://www.post.yusei.go.jp/zipcode/zipmanual/p17.htm
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved