Excelでバーコード(CODE39/CODE128)を作成したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAでバーコード(CODE39/CODE128)を一括作成ししたいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAでバーコード(CODE39/CODE128)を一括作成する方法
についてまとめます!
Excelでバーコード(CODE39/CODE128)を作成するイメージ
Excelでバーコード(CODE39/CODE128)を作成するイメージについて説明をします。
Excelでバーコード(CODE39/CODE128)を作成する方法は、大きく3つあります。
①Accessに含まれる「Microsoft BarCode Control」を使って手動で作成する方法、
②VBAで一括作成する方法、
③CODE128のバーコードフォント
を使う方法です。
標準機能「Microsoft BarCode Control」でExcelのシートから手動でバーコードを挿入することができます。

バーコードを設置できたら手動でバーコードの種類(CODE39/CODE128)を変更したり、値を設定したりします。

次にVBAでバーコードを一括で作成することができます。
バーコードの値をA列に入力し、貼り付け先のB列のセルサイズを調整してから、モジュールにコードを貼り付けて実行します。

「Microsoft BarCode Control」がライブラリにないし、VBAもハードルが高い。そのような場合は、CODE128のバーコードフォントを使う方法があります。
CODE128フォントを使うのですが、詳しくは以下の記事をご参照願います。
それでは、早速試してみましょう。
もくじ
バーコード(CODE39/CODE128)について
CODE39とは
CODE39は数字、アルファベット大文字、記号(-,.,スペース,$,/,+,%,*)に対応しています。アルファベットや記号が扱えるため、品番など特定がしやすく、主に工業用バーコードとして多く使われています。
CODE128とは
CODE128は、アスキーコード全文字
数字、アルファベット大文字/小文字、記号全般に対応しており、CODE39より扱える文字種が多いですが、CODE39の方が普及しています。GS1-128として、各業界で利用され始めています。
手動でバーコード(CODE39/CODE128)を作成する
手動でバーコード(CODE39/CODE128)を作成する方法について説明をします。
Officeでは「Microsoft BarCode Control」というライブラリが用意されていて、それを使うことによりバーコードのオブジェクトを追加することができます。
バーコード(CODE39)を作成する
「開発」タブををクリックし、「挿入」>「コントロールの選択」ボタンをクリックします。

コントロールの選択ウインドウが表示されたら「Microsoft BarCode Control 16.0」を選択し「OK」をクリックします。

バーコードを貼り付けたい箇所へドラッグし、同時にサイズを調整していきます。

マウスをはなすとバーコードが生成されシートに表示されたら
再度選択し右クリック、「Microsoft BarCode Control 16.0オブジェクト」>「プロパティ」をクリックします。

スタイル「6-CODE39」を選択し、「OK」をクリックします。

次に、バーコードのコード(値)を設定していきます。
先ほど貼り付けたバーコードオブジェクトを右クリックします。

「プロパティ」ウインドウの「value」プロパティにバーコードの値を英数字混合文字列で入力します。

バーコードの内容が変われば完成です。

バーコード(CODE128)を作成する
次にCODE128のタイプのバーコードを作成していきましょう。
先ほど作成したバーコードオブジェクトを選択し右クリックします。
「Microsoft BarCode Control 16.0オブジェクト」>「プロパティ」をクリックします。
スタイル「7-CODE128」を選択し、「OK」をクリックします。

次に、バーコードのコードの値を設定していきます。英数字にCODE39では対応していない記号を加えてみます。
バーコードオブジェクトを右クリックして、「プロパティ」ウインドウを表示させます。
「value」プロパティにバーコードの値を入力します。

バーコードの内容が変わりましたね。

次はVBAを使い一括でバーコードを作成してみましょう。
CODE128フォントの入手と設定
「Microsoft BarCode Control」はAccessに含まれるライブラリのため、Accessを導入していない環境では使用できません。そのような場合は、CODE128のバーコードフォントを使う方法があります。
CODE128フォントでは、元の値を対応するエンコーダーで変換してからフォントを適用します。Libre Barcode 128もエンコードが必要です。元の文字列のフォントを変えるだけでは、読み取れるバーコードにはなりません。
フォントを使う方法が向いているケース
- Accessを導入しておらず、Microsoft BarCode Control が見つからない場合
- バーコードを画像ではなく文字としてセルに入れておきたい場合
- VBAを使わず、手作業で少数のバーコードを作成したい場合
CODE128フォントの入手
CODE128用のフォントは、次のような方法で入手できます。
- オープンソースのバーコードフォントを利用する(Google Fontsでは Libre Barcode 128 などのバーコードフォントが無料で公開されています)
- バーコードフォントを提供しているベンダーのフォントを導入する(有料のものが中心ですが、無料の試用版が用意されている場合もあります)
フォントは、ダウンロードしたファイルを開き「インストール」を選ぶとWindowsに追加されます。
参考:Google Fonts/Libre Barcode 128の公式説明とエンコーダー
フォントの設定手順
- バーコードにしたい値(例:「ABC123」)を、使用するフォントに対応したエンコーダーで変換する。Libre Barcode 128では、公式ドキュメントのエンコーダーを利用できます。
- 変換後の文字列をExcelのセルへコピーする
- セルを選択し、フォントをインストールしたCODE128用のフォントに変更する
- 値がバーコードとして表示されるので、必要に応じて文字サイズやセル幅を調整する
フォントを使うときの注意点
- CODE128には開始・終了の記号とチェックサムが必要です。フォントに対応したエンコーダーで変換し、実際にバーコードリーダーで読み取れることを確認してください。
- Excelファイルを別のPCで開く場合は、同じフォントが必要です。PDFで共有する場合も、書き出し後の表示と読み取り結果を確認してください。
- 印刷して使う場合は、印刷プレビューでバーコードがつぶれていないか確認してください。
VBAでバーコードを一括生成する手順
VBAを使うと、A列に用意した値からバーコードをまとめて作成できます。手順の流れは次のとおりです。
- バーコードの値をA列に入力し、貼り付け先(B列)のセル幅・行の高さを調整する
- 「開発」タブ →「Visual Basic」を開いて標準モジュールを追加し、VBAコードを貼り付ける
- マクロを実行すると、A列の値の件数分のバーコードが一括で作成される
CODE39とCODE128の違いは、バーコード コントロールの「Style」プロパティの値だけです(6がCODE39、7がCODE128)。詳しいコードと設定は、以下の章で解説しています。
VBAでバーコード(CODE39)を一括作成する
VBAでバーコード(CODE39/CODE128)を一括作成する方法について説明をします。
今回は値をA列に設定し、バーコードのサイズはB列の縦横の幅に自動調整するようにします。

まずはCODE39から作成していきます。A列の値は英数字混合の文字列を指定するようにします。
VBAコード
VBAは以下の通りです。
Sub バーコードを生成する()
Dim intTop As Integer
Dim intLeft As Integer
Dim intWidth As Integer
Dim intHeight As Integer
Dim objBarCodeSetup As BarCodeCtrl
Dim i As Integer
'Excel表示シートのA列2行目以降にある値の件数分処理を繰り返します。
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
'B列セルの位置、サイズ情報を取得し変数へ代入します。
With Cells(i, 2)
intTop = .Top 'セル上部の位置
intLeft = .Left 'セル左側の位置
intWidth = .Width 'セル幅のサイズ
intHeight = .Height 'セル高さのサイズ
End With
'BARCODE.BarCodeCtrlタイプのOLEオブジェクトを追加し、選択状態にします。
ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=intLeft + 2, Top:=intTop + 2, Width:=intWidth - 5, Height:=intHeight - 5).Select
'選択したバーコードオブジェクトをオブジェクトにセットします。
Set objBarCodeSetup = Selection.Object
'バーコード コントロールのプロパティを設定します。
With objBarCodeSetup
.Style = 6 '6はCode-39、7はCode-128となります。
.Value = Cells(i, 1).Value 'A列の値をバーコードのValueプロパティへ設定します。
End With
Next
'オブジェクトを解放します。
Set objBarCodeSetup = Nothing
End Sub
VBAの設定
Excel表示シートのA列2行目からの指定となっていますが、行数を変更する場合は変数iの数値を変えてください。
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Rowバーコードの貼り付け先はB列となっていますが、C列など別の列にする場合はCellsの第二引数を変更してください。C列の場合は3、D列は4を指定します。
With Cells(i, 2)VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行
VBAを実行しましょう。
はい、B列にCODE39のバーコードが一括で作成されましたね!
値も反映されています!

VBAの説明
VBAについて説明をします。
Excel表示シートのA列2行目以降にある値の件数分処理を繰り返します。
For i = 2 To Cells(Rows.Count, 1).End(xlUp).RowB列セルの位置、サイズ情報を取得し変数へ代入します。
With Cells(i, 2)<br />
intTop = .Top 'セル上部の位置<br />
intLeft = .Left 'セル左側の位置<br />
intWidth = .Width 'セル幅のサイズ<br />
intHeight = .Height 'セル高さのサイズ<br />
End WithBARCODE.BarCodeCtrlタイプのOLEオブジェクトを追加し、選択状態にします。
バーコードの貼り付け位置とサイズは先ほどのセルの情報をベースに設定します。
ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _<br />
Link:=False, DisplayAsIcon:=False, _<br />
Left:=intLeft + 2, Top:=intTop + 2, Width:=intWidth - 5, Height:=intHeight - 5).Select
選択したバーコードオブジェクトをオブジェクトにセットします。
Set objBarCodeSetup = Selection.Objectバーコード コントロールのプロパティを設定します。
With objBarCodeSetup<br />
.Style = 6 '6はCODE39、7はCODE128となります。<br />
.Value = Cells(i, 1).Value 'A列の値をバーコードのValueプロパティへ設定します。<br />
End WithStyleプロパティはバーコード シンボルのスタイルを指定するプロパティとなりますので、以下の表を参考に設定したいスタイルを指定します。
今回はCODE39なので6を指定します。
バーコード コントロールStyle プロパティ一覧
| Style | 説明 |
|---|---|
| 0 -UPC-A | 商品のマーキングに広く使用されている POS シンボルです (米国とカナダ)。 |
| 1 -UPC-E | UPC の短縮バージョンです。標準バージョンのシンボルが印刷できないような小さい商品に使用します。 |
| 2 -JAN-13 | 国際的な規格の POS シンボルです。書籍や雑誌などを含め、すべての商品に使用します。 |
| 3 -JAN-8 | JAN の短縮バージョンです。標準バージョンのシンボルが印刷できないような小さい商品に使用します。 |
| 4 -Casecode | 製造会社や卸し売り会社が小売り店に商品を出荷するとき、梱包箱の外側に表示するシンボルです。 |
| 5 -NW-7 | 英数字を表すことができるバーコード シンボルです。コンピュータ機器など、特殊な商品のパッケージに表示します。 |
| 6 -Code-39 | 英数字を表すことができるバーコード シンボルです。FA (Factory Automation) をはじめ、工業用として広く使用されています。 |
| 7 -Code-128 | フル ASCII の 128 文字をコード化したバーコード シンボルです。 |
| 8 -US Postnet | 処理を自動化するため、郵便物に表示するバーコード シンボルです (米国)。 |
| 9 -US Postal FIM | 処理を自動化するため、郵便物に表示する特殊なバーコード シンボルです (米国)。 |
| 10 -カスタマバーコード | 処理を自動化するため、郵便物に表示するバーコード シンボルです (日本)。 |
参考:https://docs.microsoft.com/ja-jp/previous-versions/office-development/cc427155(v=msdn.10)
Valueプロパティはバーコードのデータを指定するプロパティなので、セルの値を指定します。
その他のバーコード コントロールのプロパティは以下の通りです。
| プロパティ | 説明 |
|---|---|
| Style | バーコード シンボルのスタイルを指定します。 |
| SubStyle | さらに細かいスタイルを指定します。 |
| Validation | データの有効性を確認するかどうかを指定します。 |
| LineWeight | バーコード シンボルの線の太さを指定します。 |
| Direction | バーコード シンボルの表示方向を指定します。 |
| ShowData | 数値データを表示するかどうかを指定します。 |
| ForeColor | バーコード シンボルの前景色を指定します。 |
| BackColor | バーコード シンボルの背景色を指定します。 |
| Value | 作成するバーコード シンボルのデータを指定します。 |
参考:https://docs.microsoft.com/ja-jp/previous-versions/office-development/cc427149(v=msdn.10)?redirectedfrom=MSDN
オブジェクトを解放します。
Set objBarCodeSetup = NothingVBAでバーコード(CODE128)を一括作成する
次はVBAでバーコード(CODE128)を一括作成してみましょう。
A列の値を英数字記号の混合文字列にしていきます。

VBAの設定
バーコード コントロールのプロパティを変更していきます。
「 .Style = 6」を CODE128を意味する「.Style = 7」へ変更します。
With objBarCodeSetup<br />
..Style = 7 '6はCode-39、7はCode-128となります。<br />
.Value = Cells(i, 1).Value 'A列の値をバーコードのValueプロパティへ設定します。<br />
End WithVBAを実行
VBAを実行しましょう。
はい、B列にCODE128のバーコードが一括で作成されましたね!
値も反映されています!

VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
よくある質問
CODE39とCODE128の違いは何ですか?
CODE39は数字・アルファベット大文字・一部の記号に対応し、工業用バーコードとして広く使われています。CODE128はアスキーコード全文字(アルファベット小文字や記号全般を含む)に対応しており、扱える文字種が多いのが特徴です。用途と読み取り機器が対応する規格に合わせて選んでください。
無料で使えるCODE128フォントはありますか?
オープンソースのバーコードフォントが公開されており、Google Fontsから無料で入手できるもの(Libre Barcode 128など)があります。有料のバーコードフォントでも、無料の試用版が用意されている場合があります。無料のフォントを使う場合も、実際にバーコードリーダーで読み取れるかを必ず確認してください。
あわせて読みたい
さいごに
いかがでしょうか。
今回は、
・VBAでバーコード(CODE39/CODE128)を一括作成する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。











コメントを残す