OOobbs2/81
質問
バーコードを利用するには OOoMacros にある OOoBarcode (GNU Barcode を利用する) 方法があるが、日本の郵便のカスタマーバーコードには利用できない。英国で利用されているものと同じ(?)らしいが、住所からバーコードデータを取得する必要があるので日本語が処理できないと使えない。 フォント
カスタマーバーコード用フォントは商用は多数存在するらしい。フリーのものもある。しかし、どうやら文字コードと記号の割り当てが決まっていないため適合しないと使えないことになる。 そのため、新しく作成する。調べてみると、あるプリンターの文字コードと記号の表があったのでこれと同じ配置にする (別のものとも一致しているので)。 フォントの作成は FontForge
文字コードと配置 Dec, HEX: ascii コード, CHR: 一般的なフォントでの文字, CB: CB での記号, CBC: CB での値, CN: check digit 計算時の値 10 pt に設定したときのサイズ サービス
郵便番号と住所からカスタマーバーコード (以下 CB) を生成するサービスを作成。
使い方
サービスを利用した変換 OOo Basic で書くと sPostalCode = "123-4567" sAddress = "3丁目30-8 郵便ビル403号" oNycb = CreateUnoService("mytools.Nycb") sCBCode = oNycb.convert( sPostalCode, sAddress ) 郵便番号にハイフンが含まれていても、いなくてもどちらでもよい。住所は県名などが含まれていても問題ない。住所のみから生成はできません。 複数のものを変換するときには一度インスタンス化したサービスを何度も利用できます。 For i = 0 To 10 sCode = oNycb.convert( .... Next i 下記のテスト用ファイルに上記を利用した OOo Basic のマクロが含まれています。 Calc 関数
Calc 上で利用できる (実際はどこでも利用できる) 関数を作成。変換は上記サービスと同じでよいので、クラスを Calc AddIn として利用できるようなものを別に作成。
使い方
セルに普通の関数と同様に入力します。 =NYCB(A1;B1) 一つ目の引数: 郵便番号を文字列で、二つ目の引数: 住所を文字列で指定します。もちろんセルを参照できます。 関数の結果は同じセルに (26300233-30-8-403DDD5) などのように表示されるので、上記フォント (nycbf) をセルに設定してやるとコードが表示されます。 ファイル
※ライセンス: ライセンス事項はありませんが、保障もありません。読み取れないコードが生成されたり、PC などに悪影響があったとしても責任を取る人はいません。
インストール
フォント
nycbf.zip ファイルを解凍し、nycbf.ttf を環境に応じてインストール。同梱の nycbf.sfd ファイルは FontForge 用のファイルで、フォントを変更したい方以外は不要です。 フォント名は nycbf です。指定するときは前述をフォント名として設定してください。また、10 pt に設定したとき許容範囲内に収まるように作成されています。ですが、環境に応じて微調整が必要なこともあります。 サービス
※OOo 2.x 以降に Py-UNO がインストールされていないと動作しません。 nycb.oxt ファイルを OOo のツール - 拡張機能マネージャからインストールしてください。インストール後は OOo を再起動する必要があります。 AddIn 関数
※OOo 2.x Py-UNO がインストールされていないと動作しません。 NycbAddInFn.oxt ファイルを OOo のツール - 拡張機能マネージャからインストールしてください。インストール後は OOo を再起動する必要があります。 テスト用ファイル
上記フォント、サービス、AddIn 関数が正しく配置、インストールできておれば以下のように表示されます。OOo で書かれたマクロが含まれています。実行するとセル範囲の郵便番号と住所から列CとD にコードを書き込みます。 アンインストール
フォントは環境に応じて削除してください。 サービスおよび AddIn 関数はツール - 拡張機能マネージャから削除してください。正しく動作させるために OOo を一度再起動させるほうが無難です。 回答
感想,コメント,メモ
|