JANCODEをバーコードのフォントを使ってピッってできるようにしちゃうエクセル

商品についてあるバーコードをエクセルでも表示できるように作成しました。

エクセルにJANコードを表示させているサンプル
JANコードのバーは、0~9が3種類と、スタート、センター、エンドの3種類の合計33個のバーがあります。

スタートからセンターまでの6個で2種類、センターからエンドまで1種類を使用してできています。

決まった法則に基づいて白黒の位置が決まりますので、どんな組み合わせか計算する必要があります。
スキャンできるようにするには、表示用の文字列を取得する必要があります。
javascript版(別タブ)専用エクセルアドイン登録したエクセルを使って、表示用の文字列に変換したあと、 JANコードのフォントに変更するとスキャンできるバーコードになります。
2016年2月11日

一例

4902102072618 X9A21ACKLSNRMTZ
JAN:4902102072618
バー用文字列:X9A21ACKLSNRMTZ

和文フォントで作成しました

JANCODE-nicWabun/JANCODE-nicBAR は和文フォントとして作成したので、ブラウザで表示することができます。
google chrome は、
『JANCODE-nicWabun/nicotan/nicBAR』どれも表示できるようです。

nicWabun
半角英数字:数字あり
全角英数字:数字なし
数字ありと数字なしの2つ入ってます。
あり⇔なし の切り替えを、半角 ⇔ 全角の切り替えで行えます

nicBAR
半角英数字:数字なし

CSS用に nicWabun.eot .woff の2種類も合わせて作成しました。
試しに半角で 4902102072618 を入力してみてね↓
JAN:

エクセル(アドイン、専用エクセル)のご利用に関して

MIT ライセンス

Copyright (c) 2015 nicotan
Released under the MIT license
http://opensource.org/licenses/mit-license.php

MIT ライセンスの全文の意訳の引用元
http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license#h1-The.20MIT.20License

The MIT License

Copyright (c) year copyright holders
以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル(以下「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制限に扱うことを無償で許可します。

これには、ソフトウェアの複製を使用、複写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含まれます。

上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重要な部分に記載するものとします。
ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何らの保証もなく提供されます。
ここでいう保証とは、商品性、特定の目的への適合性、および権利非侵害についての保証も含みますが、それに限定されるものではありません。
作者または著作権者は、契約行為、不法行為、またはそれ以外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使用またはその他の扱いによって生じる一切の請求、損害、その他の義務について何らの責任も負わないものとします。
具体的に言うと
  • エクセルを会社で使いたい
  • マクロを変えて会社で使いたい
  • アドインファイルを共有サーバーに置いてつながっているPCで使いたい
  • エクセルのVBAをいじってソフトウェアとして販売したい
自由に使えます
ただし、
  • 保証はないです
  • ソースが原因で何かがあっても責任は一切追いません
ソースコードを利用してソフトウェアとして販売する場合は、この3行を記載してください(ヘルプとか)
Copyright (c) 2015 nicotan
Released under the MIT license
http://opensource.org/licenses/mit-license.php

MIT ライセンス自体の詳細はぐぐってください

使える数式

シートの削除、追加しても使用できます
開いてすぐのシートを参考に使用してください
=jan()

=jan(A1)、=jan(4902430520294)
引数に7桁8桁12桁13桁のJANコードを入れるとフォント用の文字列が返ります。
=jancd()

=jancd(A1)、=jancd(4902430520294)
引数に7桁8桁12桁13桁のJANコードを入れるとチェックデジットの数字のみを返します
8桁目13桁目を間違っていても計算したうえで正しいC/Dを返します
=rejan()

=rejan(A1)、=rejan("X9A24DAKQNLNUPZ")
引数にフォント用の文字列を入れるとJANコードを返します
直接入力する場合は""で囲むの忘れずに
=janw() の実装に伴い、引数に nicWabun 用の全角文字列を入れてもJANコードが返るようにしました。
※チェックデジットの計算をしません。
=janw()

(※ver20150416~)
=janw(A1)、=janw(4902430520294)
引数に7桁8桁12桁13桁のJANコードを入れると、『JANCODE-nicWabun』の数字なし用の文字列が返ります。(全角文字列)
=itf()

(※ver20151028ITF.xls)
=itf(1, A1)、=itf(1, 4902430520294)
引数の1つ目にインジケータ(1桁)
2つ目に12桁13桁のJANコードを入れると、チェックデジットを付与したコードを返します
=> 14902430520291
=itfcd()

(※ver20151028ITF.xls)
=itf(1, A1)、=itf(1, 4902430520294)
引数の1つ目にインジケータ(1桁)
2つ目に12桁13桁のJANコードを入れると、チェックデジットの数字を返します
=> 1

エクセルのダウンロードはこちら

業務PCのため権限がなくアドイン登録できない場合や、他人に渡す場合は 『=jan()』が埋め込まれた、
通称『専用のエクセル』をどうぞ

『専用のエクセル』ダウンロード:JANCODE-nicotan用エクセル20151028ITF.xls
無料。
右クリックして対象をファイルに保存を選んでね。
バージョン:(2015.10.28)


アドイン登録後、エクセルを起動しなおすとアドインが適用されない件(=jan()が使えたのにNAME?になる)

インターネット上から取得したファイルにロックを掛けるようになっているのが原因でした。
なおしかた?解決策は↓をご覧ください。

1.ダウンロードしたファイルを右クリック
2.プロパティ
3.一番下のロック解除

2015年10月に要望のあったITFコードの数式を追加しました。
JANコードのバーコードとは全く違いますので当フォントは使用できません。
バーコードのフォントは「 ITF バーコード フォント 」でググれば出るはず
需要があるかわかりませんが2か月遅れですが公開します


※あえて古いのをダウンロードする必要もないような気がしますが置いときます
※実装していない数式がありますので普通に最新版↑をご利用ください

(2015.08.10)
JANCODE-nicotan用エクセル20150810.xls
=rejan(8ケタ)を実行したときに関数内で15ケタとして計算していたので9桁目でエラーが発生し 変換されない不具合を修正しました

※ rejan(8桁)が計算できない不具合があります。
(2015.05.04)
JANCODE-nicotan用エクセル20150504.xls
(2015.04.16)
JANCODE-nicotan用エクセル20150416.xls

(2015.03.22)
JANCODE-nicotan用エクセル20150322.xls
旧バージョン(2014.05.15)
JANCODE-nicotan用エクセル20140515.xls
旧バージョン(2014.04.10)
JANCODE-nicotan用エクセル20140410.xls
旧バージョン()
JANCODE-nicotan用エクセル.xls

※VBAを使用していますので、開く際にはマクロを有効にする必要があります。
このエクセルを使用によって、データ・パソコンの障害・不具合に関して一切の責任を負いかねます。予めご了承ください。

更新履歴

2015年12月17日
  • JANCODE-nicotan用エクセル20151028ITF.xls を公開しました。
    ITFコードを返す数式を追加しました
    コードを返すだけです。
    =itf(インジケータ, JANコード)
    =itf(1, 4902102072618) => 14902102072615 ・・・あってる?
    =itfcd(インジケータ, JANコード)
    =itfcd(1, 4902102072618) => 5
    引数を2つにした方がセルの指定からのオートフィルが楽なんじゃないかと思いました(セル番地,セル番地)
2015年8月10日
  • JANCODE-nicotan用エクセル20150810.xls を公開しました。
    =reJan(8桁) が実行されない不具合を修正しました。
    実は、アドイン用の方さりげなく直してました(´・ω・`)
2015年8月6日
2015年5月4日
  • VBA を配列式に変更してみました。(ファイルサイズが10kbぐらい減りました)
  • ソースコードを(2015.05.04)に変更しました。
2015年4月16日
  • 『関数の挿入時』の「ユーザー定義関数」欄から「JANCODE」という項目になるように名前を指定しました
  • エクセルの数式に =janw() を追加しました。
    『JANCODE-nicWabun』を使用して数字なしのバーを表示させるための数式です(答えが全角になります)
    『JANCODE-nicBAR』を使用する場合は =jan() を使ってください
  • =JanW() の『関数の挿入』メッセージを追記しました。
  • 『頭が0である場合』があるので =rejan() の答えを数値型ではなく文字列のJANコードにするようにしました
  • =rejan() に『JANCODE-nicWabun』用の全角文字列に対応しました
  • 専用エクセルにてセルの入力中に =Jan =JanCD =JanW =reJan が入力候補に出るように public function にしました
  • ソースコードを(2015.04.16)に変更しました。

エクセルの使い方(総合窓口)

各種ページへ飛びます
  • フォントのインストール(別ページ)
  • アドインの登録・削除(別ページ)
  • セキュリティの警告リンクの自動更新が無効にされました
  • アドイン・専用エクセル =jan() の使い方
  • 専用エクセルの名前を付けて保存時の注意
  • 入力したJANコードが4.9E+12になる
  • エクセルの先頭に0を付けたい
  • 外国製品の12桁をバーコードにすると違うコードになってしまう
  • わかんなかったら連絡ちょうだいね
    また、エクセルでこんなのほしいとかあったら言ってね
    プロじゃないのでできないものはできませんができるものはできるとおもいます。
    少しでも業務多忙のみなさんの時間短縮になれば幸いです
    jancode.nicotan@gmail.com
    (*´Д`*)v

    使い方

    1. 適当なセルに JAN (7桁・8桁・12桁・13桁)を入力する
    2. 別なセルに =jan(上記のセル番地) と入力する
      JANを入力中
      例:
      A1  4903076050015
      B1  =jan(A1)

      ※ =jan( 4901085080405 ) と直接打ち込んでもおk
    3. =jan()と入力したセルのフォントをJANCODE-nicotanに変更する
      フォント変更
    4. フォントの大きさを便宜調整して使ってね
    5. エクセルですので、オートフィルが利用できます。
      オートフィル

    専用エクセルの名前を付けて保存時の注意

    2000(未確認)、2003(確認済み)、2007-2016 まで開けるように「Excel 97-2003 ブック」形式で配布しています。
    セルの書式設定
    専用エクセル内に数式を埋め込んでありますので(VBA)、
    名前を付けて保存する際には
    • Excel 97-2003 xls (旧式中身と合体)
    • Excel マクロ有効ブック xlsm (2007以降VBAを保存)
    のいずれかにする必要があります
    Excel ブック xlsx 形式で保存すると、マクロ(VBA)を破棄して保存されますので =jan() 等使用できなくなります。

    互換モードを変換するとマクロ有効ブック(xlsm)として書き換えられます
    セルの書式設定
    セルの書式設定
    セルの書式設定
    セルの書式設定

    JANコードの数字が全て表示されない E+12

    1. 入力したJANが 4.9...E+12 となって表示されているのは桁が大きすぎて略しているだけです。
      4兆ですからw( =jan()にはなんの影響もありません。見た目上というだけ。)
    2. セルの書式設定
    3. セルの書式設定
    4. 表示形式を、一番下のユーザー定義 種類を半角で0(ゼロ)を入力(選択)
      表示形式ユーザー定義
    5. 入力した数字が出てきます。( =jan()にはなんの影響もありません。)

    エクセルでセルの先頭に0を付けたい (=jan() へ反映させるとして)

    方法1頭にシングルクオーテーションを付ける
     頭にシングルクオーテーションを付けると文字の数値として認識されます。
     '0123456
     =jan( A1 )

    方法2ダブルクオーテーション(" ")で数字を囲む
     直接引数に入力している場合のみ
     =jan("0123456")

    方法3ダブルクオーテーションで0を囲み "&" でくっつける
     =jan("000"&A1)
     ⇒意味:文字列000の次にA1に入力されている値をくっつけた値
     これだとオートフィルが利用できます

    外国製品の12桁を生成すると違うコードになってしまう

    UPCコードかと思われます。
    JANコードとして1桁足りないので、頭に0を付けてください。
    上記と同じように、
    '0876543210981
    =jan(A1)
    =jan("0876543210981")
    =jan("0"&A1)

    文字列を取得できます


    javascriptの場合

    入力欄にJANコード(チェックデジット有り無し)を入力し、【変換】ボタンをクリック
    枠線内に文字列が表示されます。

    この文字列を、「フォント」を変えられるソフト(エクセルに限らず、ワードや画像加工ソフトなど)で
    『JANCODE-nicotan/JANCODE-nicBAR』に変えるとバーコードが表示されます。

    エクセル(専用・アドイン)の場合

    オリジナル数式 =JAN() を使用します。
    =JAN(A1)のようにJANコードが入力されているセル番地を入れます
    =JAN(490210207261)※チェックデジットなし、
    =JAN(4902102072618)のように直接JANコードを入れても構いません

    フォントを『JANCODE-nicotan/JANCODE-nicBAR』に変えるとバーコードが表示されます。

    エクセル2007以降用リボンカスタマイズバージョンの場合

    ※ 書き換えられますのでセルの選択と、設定値に注意です
    リボンカスタマイズバージョンのページへ移動

    セルを選択します。

    文字列取得ボタンをクリックします

    文字列が書き込まれます

    rubyの場合

    ※知っている人向けです
    require "./def_jan" をして読み込んでください。
    jan() 引数に、『文字列数値、数値』を入れると、文字列が返ってきます。
    配列を入れると文字列になった上でそのまま配列が返ります。
    cmd_ruby_def_jan