物流、製造、医療など幅広い現場の自動認識システムを支える「CODE128」。全ASCII文字(128文字)を高密度に表現できる汎用性の高さから、受発注コードやシリアル番号管理において不可欠な規格です。しかし、いざ自社でラベルを発行しようとすると、「スキャナーで読み取れない」「フォントを当てただけでは反応しない」といったトラブルに直面する現場が後を絶ちません。
現場での読み取りエラーは、出荷停止や誤配送など致命的な業務遅延を引き起こします。CODE128はCODE39などの従来規格と異なり、複雑なチェックデジット計算やスタート/ストップコードの付与が必須となる仕様です。本稿では、エクセルでの自動生成手順から無料ツールの選定基準、印字トラブルの予防策まで、現場で即座に役立つ実践ノウハウを解説します。
【基本構造】CODE128の特徴とCODE39・GS1-128との決定的な違い

バーコード規格を選定する際、最も頻繁に比較されるのがCODE39とCODE128です。従来のCODE39は数字と英大文字、一部の記号のみに対応し、構造が単純な反面、文字数が増えるとバーコードの横幅が極端に長くなる弱点がありました。対してCODE128は、数字・英大文字・英小文字・制御文字を含む全ASCII 128文字を極めて高い情報密度で表現可能です。
CODE128の内部には「コードセットA」「コードセットB」「コードセットC」という3種類のキャラクターセットが存在します。英大文字や制御コードを扱う「セットA」、一般的な英数大小文字・記号を網羅する「セットB」、そして2桁の数字を1キャラクタで圧縮表現する「セットC」です。特に数字のみが連続するデータでは、セットCを用いることでバーコード全体の幅を劇的に短縮できます。
また、流通業界で標準化されているGS1-128との違いについても整理が必要です。GS1-128はCODE128の物理仕様をベースにしつつ、先頭に「FNC1(ファンクション1)」と呼ばれる特殊識別子を配置し、賞味期限やロット番号などのデータ項目(AI:アプリケーション識別子)を国際規約に沿って定義した規格です。社内管理や独自伝票で自由にデータを持たせる場合は通常のCODE128を使い、サプライチェーン間での汎用取引を行う場合はGS1-128を選択するという明確な棲み分けが存在します。
なぜスキャンできない?CODE128バーコードが「読み取れない」主な原因
「見た目は綺麗なバーコードなのに、ハンディターミナルで全くスキャンできない」――この現象に悩まされる担当者は少なくありません。CODE128が読み取れない場合、その原因の約8割はデータの変換処理ミスか印字レイアウトの不備に集約されます。
最大の落とし穴は、元の文字列の前後にスタートコードとストップコードが正しく付与されていないケースです。CODE128では「START-A」「START-B」「START-C」のいずれかから始まり、「STOP」コードで終端しなければスキャナーがシンボルとして認識しません。加えて、データ列から算出するチェックデジットの計算値が1箇所でもズレていると、スキャナーは誤読防止機能によって読み取りを自動的に拒絶します。
物理的な印刷面では、バーコードの左右に必要な余白「クワイエットゾーン(マージン)」の欠落が目立ちます。CODE128の規格上、最小エレメント幅(細バーの幅)の10倍以上、または2.54mm以上の左右余白が必須です。ラベルの端ギリギリに印字したり、枠線で囲んでしまったりすると、背景とバーの境界を光学センサーが識別できなくなります。
【現場直伝】CODE128チェックデジットの計算方法とモジュロ103の仕組み
CODE128の信頼性を担保しているのが、「モジュロ103(Modulo 103)」という強力な誤り検出アルゴリズムです。CODE128のチェックデジットは視覚的な数字として印字されるのではなく、ストップコードの直前に特殊なバーパターンとして埋め込まれます。
計算手順は以下の通りです。最初に、使用するスタートコードのキャラクタ値(START-A=103, START-B=104, START-C=105)を取得します。続いて、後続する各データキャラクタの値に対し、先頭から順に「1, 2, 3...」と重み(ウェイト)を乗算して合計します。
この総和を「103」で割った余り(剰余)がチェックデジットの値となります。算出した数値に対応するキャラクタをデータ末尾(ストップコードの前)に挿入することで、初めて規格に適合した正確なデータ列が完成します。手作業での計算は非現実的であるため、後述するプログラムやマクロを用いた自動計算が基本となります。
エクセルで自動生成!CODE128フォントダウンロードと関数マクロ活用術
業務で最も需要が高いのが、Microsoft Excelを使った一括バーコード発行です。ただし、無料の「CODE128フォント」をダウンロードしてセルに適用するだけではバーコードは完成しません。前述のスタートコード、チェックデジット、ストップコードを計算し、フォントに対応する文字コードへ変換する前処理が必要です。
エクセルで自動生成を完結させるには、VBA(マクロ)モジュールの導入が最も確実です。オープンソースで配布されているCODE128用のエンコード関数(`Code128Encode`など)をVBAプロジェクトに貼り付け、セル上で`=Code128Encode(A2)`のように呼び出します。関数から返された暗号のような文字列に対し、ダウンロードした「Code 128」バーコードフォント(TTF形式など)を指定することで、正しいスキャン可能なバーコードが表示されます。
なお、フォント方式はエクセルのバージョンや利用端末ごとのフォントインストールの有無に依存します。社内配布を行う場合は、フォント不要で図形(画像)としてバーコードをセル内に直接描画するVBAスクリプトやアドインを採用する現場も増えています。
手軽に即時発行!おすすめのバーコード作成無料ツールとオンライン生成の活用法
単発の作業や少数のラベル発行であれば、ブラウザ上で完結するオンライン無料作成ツールの活用が圧倒的にスムーズです。「バーコードどころ」や各種Webジェネレーターは、入力した文字列からチェックデジットを自動計算し、高解像度のPNG、SVG、あるいはPDF形式で即座に出力してくれます。
無料ツールを選定する際は、出力フォーマットの柔軟性に注目してください。ビットマップ画像(PNG/JPG)を拡大するとバーのエッジがぼやけて読み取り率が低下するため、ベクター形式(SVGまたはEPS)で保存できるツールを選ぶと印刷劣化を防げます。また、英数字の組み合わせに応じてコードセット(A/B/C)を自動で最適化(オートスイッチング)してくれるサービスを選ぶと、コード全体の長さを最小化できます。
機密性の高いシリアル番号や個人情報を含むコードを作成する場合は、外部サーバーにデータを送信しない「クライアントサイド(JavaScript)で完結するジェネレーター」を選択するか、オフラインで動作するスタンドアロン型のフリーソフトを導入するのがセキュリティ上の鉄則です。
かすれや滲みを防ぐ!現場で失敗しないバーコード印刷設定と注意点
正確なバーコードデータを作成しても、印刷品質に問題があればスキャナーは反応しません。特に注意すべきはプリンターの解像度(dpi)とエレメント幅の整数比設定です。
一般的なオフィス用レーザープリンター(600dpi)やサーマルラベルプリンター(203dpi/300dpi)で出力する際、画像を中途半端に縮小・拡大すると「アンチエイリアス(ぼかし)」がかかり、細バーと太バーの比率が狂ってしまいます。バーコード作成ソフト側で、プリンターの1ドット(dot)の整数倍でエレメント幅を設定(例: 2dot、3dot幅)し、エッジがクッキリと出るよう出力することが肝要です。
また、インクジェットプリンターでの普通紙印刷は、インクの滲み(バー太り)によってバー同士がくっつき、読み取りエラーの温床となります。大量印刷や物流用途では、滲みのない熱転写方式(サーマルプリンター)と耐候性のあるラベル用紙の組み合わせが推奨されます。印刷後は必ず実機のスキャナーで複数回のテスト読み取りを実施してください。
【CODE128バーコード作成】に関するよくある質問(FAQ)
Q1:CODE128で表現できる桁数に上限(制限)はありますか?
A1:規格上の厳密な上限はありませんが、物理的な印刷幅やスキャナーの読み取り視野(スキャン幅)による実質的な制限が存在します。一般的には20〜30文字程度が実用的な上限とされ、それ以上の長いデータを扱う場合は2次元コード(QRコードなど)への切り替えが推奨されます。
Q2:フォントをインストールしたのにエクセルでスキャンできないのはなぜですか?
A2:元の文字列にスタートコード、チェックデジット、ストップコードが含まれていないためです。フォントは文字の見た目をバーに置き換えているだけなので、VBAマクロ等を用いて計算済みの変換後文字列に対してフォントを適用する必要があります。
Q3:GS1-128とCODE128は同じスキャナーで読み取れますか?
A3:物理的なバーコード構造は同一であるため、一般的なバーコードリーダーで読み取り自体は可能です。ただし、GS1-128特有のアプリケーション識別子(括弧付きのデータ構造)を分解・解析して業務システムに取り込むには、上位システム側での適切なデータパース処理が必要となります。
CODE128は、高い情報密度と優れた汎用性を兼ね備えた強力なバーコード規格です。しかしその高度な仕様ゆえに、スタート/ストップコードの確実な付与やモジュロ103チェックデジットの算出といった正確なデータ前処理が運用の大前提となります。
エクセルでの自動化マクロ構築、ベクター形式に対応したオンラインツールの使い分け、そしてプリンター解像度に合わせた適切なマージンとエレメント幅の設計。これら基本の徹底こそが、現場での読み取りトラブルを根絶し、業務効率を最大化する最短ルートです。