2024.10.29 コラム

バーコード作成マクロをつくってみた

どうも、松山担当のBokuです。

今回は、バーコード作成のマクロを作ってみました。
簡単にバーコード作成できますよ。

今回のバーコード作成をするには、バーコードの参照設定が必要ですので、Excel以外にAccessが必要になります 。
さて、さっそくつくってみましょう♪

まず、エクセルを立ち上げます。

開発のタグを押下しましょう。

Visual Basicというのが出てくるので押下しましょう。

すると、以下のような画面になります。

「ツール」タグを押下すると、「参照設定」というところがあるので押下しましょう。

上記の様に参照設定からMicroSoft Access BarCode Control 16.0 を参照設定しておきます。
※Microsoft Access をインストールしている必要があります。

右クリックをして、Visual Basic モジュールを挿入しましょう。

そのあと、以下のソースをコピペしてみましょう。

'★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Sub ボタン1_Click()

    Dim OutSheetName As String
    OutSheetName = "出力シート"
    InSheetName = "入力シート"
    Dim cell_cnt As Integer
    Dim getnum As Integer

    Application.DisplayAlerts = False   

    'シート追加

    Dim NewWS As Worksheet
    Set NewWS = Worksheets.Add(After:=Worksheets(InSheetName))

    With NewWS
       .Name = OutSheetName
       .Columns.ColumnWidth = 10
    End With   

    ' 初期値設定
    lngTop = 20   
    Dim Lastrow As Long
    Lastrow = Worksheets(InSheetName).Cells(Rows.Count, "A").End(xlUp).Row

   
    ' 入力シートのA列のデータを有効行まで読み込む
    For cell_cnt = 2 To Lastrow
        If cell_cnt = 2 Then
        Else
            lngLeft = lngLeft + 128
        End If
        If (cell_cnt - 2) Mod 4 = 0 And cell_cnt <> 2 Then
            lngLeft = 0
            lngTop = lngTop + 68
        End If

        intWidth = 300
        intHeight = 50
       
        ' 何もない場合は、ループ抜ける
        If Worksheets(InSheetName).Cells(cell_cnt, 1).Value = "" Then
            Exit For
        End If

        ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", _
            Link:=False, DisplayAsIcon:=False, _
            Left:=lngLeft + 5, Top:=lngTop - 3, Width:=intWidth, _
            Height:=intHeight).Select    
        Set objOLEObject = Selection
        Set objBarCode = objOLEObject.Object
        With objBarCode
            .Style = 2
            .SubStyle = 0
            .ShowData = 0
        End With

        objOLEObject.LinkedCell = "入力シート!A" & cell_cnt
        objOLEObject.ShapeRange.LockAspectRatio = msoFalse
        objOLEObject.ShapeRange.Width = 120

        Application.ScreenUpdating = True       

        If cell_cnt = 2 Then
        Else
            left_mar = left_mar + 2
        End If

        If (cell_cnt - 2) Mod 4 = 0 And cell_cnt <> 2 Then
            left_mar = 0
            top_mar = top_mar + 5
        End If

        Worksheets(OutSheetName).Cells(1 + top_mar, 1 + left_mar) = "=入力シート!B" & cell_cnt
        Worksheets(OutSheetName).Cells(1 + top_mar, 2 + left_mar) = "=入力シート!C" & cell_cnt

    Next

End Sub
'★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

 

ちなみに、ソースの

With objBarCode

.Style = 2   2は、Barcode のフォーマットです。

Barcode の種類は以下のようなものがあります。

 番号 バーコード種別 バーコードの説明
 0 UPC-A アメリカの商品コード。12桁。(データ11桁+チェックデジット1桁)
 1 UPC-E アメリカの商品コード。短縮バージョン。8桁(データ7桁+チェックデジット1桁)
 2 JAN-13 日本の商品コード。13桁。(データ12桁+チェックデジット1桁)
 3 JAN-8 日本の商品コード。13桁。(データ12桁+チェックデジット1桁)
 4 Casecode E 物流コードITFです。ベアラーバー(印刷圧を一定にするための外周枠)が表示されます。
 5 NW-7 主に数字のみを表示。桁数制限無し。初期値ではスタート/ストップキャラクタ(スタート/ストップ文字)が無いため、かならず「データの確認項目で「1-スタート/ストップ文字」を設定します。
 6 Code-39 主に数字とアルファベット大文字を表示。桁数制限無し。初期値ではスタート/ストップキャラクタ(スタート/ストップ文字)が無いため、かならず「データの確認項目で「1-スタート/ストップ文字」を設定します。
 7 Code-128 ASCIIの128文字(数字、アルファベット大文字小文字、記号)を全て表示可能な種類。ただしバーコードコントロール9.0では制御文字(HEX 00~1F)や特殊なキャラクタ(FNC1、CodeAなど)を表示できず、目視読み取りできる文字のみをバーコード化します。桁数制限なし。バーとスペースの太さが4段階あるため、高精度な印刷が必要です。
 8 U.S.Postnet アメリカの郵便バーコード
 9 U.S.PostalFIM アメリカの郵便バーコードのひとつ 10 カスタマバーコード 日本の郵便カスタマバーコード。名称はバーコードですが、一次元バーコードリーダーで読み取れません。
 10 カスタマバーコード 日本の郵便カスタマバーコード。名称はバーコードですが、一次元バーコードリーダーで読み取れません。

 

日本では、基本JAN or Code 128 で作られてます。
お店のバーコードスキャナもそのような設定が多いみたいですねぇ。

あとは、下のようにボタンを作って上で作成したFunction に割り当てましょう。

上記の、プログラムでは、A、B、C列で、JAN、商品名、金額を設定したのを読みにいっているので、このような形でA、B、C列に記述してください。

あと、Excel 2013以上だと、マクロを有効にしたい場合は、xlsmで保存しなおしましょう。

ボタンを押下すれば、下記のように、「出力シート」にバーコードが作成されます。
※「出力シート」があるとエラーになってしまうので、ボタンで作成する前に「出力シート」の名前を変えておきましょう。
 興味があるかたは、「出力シート」があれば削除するように変更してみましょう。

それを印刷すれば、バーコードスキャナで取り込めます。

バーコードスキャナや、お店でレジのある方などは、スキャンして確かめてみてください。

これを使って、バーコード作成できる方がいれば、わざわざソフトを買わなくても
簡単にバーコード作成できますね。

以上、松山担当Bokuでした。