Excelでバーコード表示に挑戦する連載の6回目です。前回の記事はコチラです。
前回はアルファベットの大文字、小文字の区別をバーコードで表現する方法として、バーコード規格の1つであるコード128をご紹介しました。
でも、この規格は少し複雑なんですよね。全部の機能に対応するにはちょっと骨が折れます。今回は、そこを何とか工夫してツール化してみようと思います。
3つのスタートコード
なぜコード128がコード39に比べて複雑なのかというと、色々な文字の表記に対応しているからです。中でも複雑なのが複数のコード体系があるということです。前回もご紹介した通りコード128には「CODE-A」、「CODE-B」、「CODE-C」の3つのスタートコードがあって、それぞのコードと文字の割り当て方が異なります。また、バーコードのデータ内でスタートコードを挿入すると、途中で文字の割り当て方を変更できます。これらの機能をすべて盛り込むと大変な内容になってしまいます。
ここで改めて、3つのコード体系の特徴をおさらいしてみようと思います。
CODE-A
アルファベット、数字、記号に加えて改行コードなどの制御コードが使用できる。アルファベットは大文字のみ。
CODE-B
制御コード以外はCODE-Aとほぼ同じ文字を使用できる。制御コードの代わりにアルファベットの小文字が使用可能なる。
CODE-C
各コードに「00」~「99」までの2桁の数値が割り当てられる。数字のみで構成されているデータの場合、コンパクトなバーコードで表示できる。
以上を整理してみると「CODE-B」のみに絞ってツール化を進めていくのがよさそうです。「CODE-A」で使用可能な制御コードですが、単純に情報を伝えるだならはほとんど出番はありません。「CODE-C」では数字を効率的に表現できますが、「CODE-B」でも効率が悪くなりますが数字の表現は可能です。「CODE-B」ならば、アルファベットの大文字、小文字を含めて幅い広い内容をバーコードで表現できますね。「CODE-B」のみでツール化してみようと思います。
バーコード化の手順
コード39では「*」で挟んだ文字データを対応するコードに変換していけば良かったのですが、コード128では少し複雑になります。以下に手順を整理していきましょう。
スタートコード
スタートコードは「CODE-B」に固定です。割り当てられている番号は104、バーと間隔の太さパターンは2,1,1,2,1,4となります。
文字データ
続いて表記される文字データについて、該当する太さパターンで表記します。あわせてそれぞれの文字データに割り当てられる番号も記録します。
-
スタートコードと文字データに割り当てられている番号を使って、チェックデジットを計算して表記します。計算方法(モジュラス103)は前回ご紹介した通りです。
ストップコード
最後にストップコードを表記します。表記内容は前回ご紹介した通り固定です。
コード128はチェックデジットを計算する必要があります。文字データからバーと間隔の太さパターンと同時に、割り当てられた番号を取得できなければいけません。また、算出されたチェックデジットの番号からもバーと間隔の太さパターンを取得できなければいけません。この部分が本ツールの肝ですね。
実際のツール
そんな訳で作ったツールが以下(BarCode128.xlsm)になります。
使い方は以前作成したコード39のバーコードを作成、表示するツール(BarCode39.xlsm)とほぼ同じです。
組み込みたい場合は、バーコードを表示させたいシート内で以下のプロシージャを一度実行してください。(実行後は削除して結構です。)
'バーコードのリンク作成 Sub MakeBarCodeLink() BarCode128.Range("BAR_CODE").Copy Me.Pictures.Paste(Link:=True).Select End Sub
入力された値との連携は、バーコードを表示しようとしているシートに以下のコードを記述で可能です(今回の例ではセルに「INPUT」と名前が付けられています)。
'入力との連携 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Me.Range("INPUT").Address Then BarCode128.Range("TEXT").Value = Target.Text End If End Sub
次回はコードの解説
いかがでしょうか。これでコード128のバーコードをExcel上で使うことができます。次回は本ツールのコードの解説です。お楽しみに!!