Code 128

ISSUE / QUESTION

- Cách tạo mã vạch Code 128 trên Excel ?

- Tải Font mã vạch Code 128 ?

APPLICABLE TO

Microsoft Excel.

Code 128 Barcode Fonts.

RESOLUTION / ANSWER


Font Code 128 là gì ?  Font Code 128 là một phông chữ hiện đại và phổ biến. Mức độ phổ biến ngày càng tăng do đây là phông chữ có mật độ cao và hỗ trợ cả ký tự "chữ" và "số".

 

Nói chung, Code 128 bao gồm 7 thành phần. Với các trường sau:

 

    - Quiet Zone
    - Start Symbol
    - Encoded Data
    - Check Symbol
    - Stop Symbol
    - Final Bar
    - Quiet Zone

 

Font chữ Code 128 có 3 tập con, được mô tả ngắn gọn dưới đây:

    - Code 128A: Hỗ trợ bảng ký tự ASCII không có ký tự thường.
    - Code 128B:  Hỗ trợ bảng ký tự ASCII không có ký tự đặc biệt ở ví trí đầu tiên.
    - Code 128C: Tập con này hỗ trợ giá trị "Số".

 

Để tạo mã vạch Code 128 trên Excel chúng ta cần thực hiện một số bước dưới đây:


Bước 1: Tải font Code 128 

 

- Download font Code 128 theo link dưới đây:

 

https://www.suamayinmavach.com/2018/05/fonts-barcode-ma-vach.html

 

- Tiến hành giải nén thư mục Code_128 vào thư mục C:\Windows\Fonts.


Bước 2: Áp dụng cú pháp lập trình VBA


-> Chọn tab Developer > Visual Basic 

 


-> Chọn Insert > Module trong cửa sổ Visual Basic

 

 

-> Gõ đoạn code dưới đây vào Module

Option Explicit
Public Function Code128(SourceString As String)
    Dim Counter As Integer
    Dim CheckSum As Long
    Dim mini As Integer
    Dim dummy As Integer
    Dim UseTableB As Boolean
    Dim Code128_Barcode As String
    If Len(SourceString) > 0 Then
        For Counter = 1 To Len(SourceString)
            Select Case Asc(Mid(SourceString, Counter, 1))
                Case 32 To 126, 203
                Case Else
                    MsgBox "Invalid character in barcode string" & vbCrLf & vbCrLf & "Please only use standard ASCII characters", vbCritical
                    Code128 = ""
                    Exit Function
            End Select
        Next
        Code128_Barcode = ""
        UseTableB = True
        Counter = 1
        Do While Counter <= Len(SourceString)
            If UseTableB Then
                mini = IIf(Counter = 1 Or Counter + 3 = Len(SourceString), 4, 6)
                GoSub testnum
                If mini% < 0 Then
                    If Counter = 1 Then
                        Code128_Barcode = Chr(205)
                    Else
                        Code128_Barcode = Code128_Barcode & Chr(199)
                    End If
                    UseTableB = False
                Else
                    If Counter = 1 Then Code128_Barcode = Chr(204)
                End If
            End If
            If Not UseTableB Then
                mini% = 2
                GoSub testnum
                If mini% < 0 Then
                    dummy% = Val(Mid(SourceString, Counter, 2))
                    dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 100)
                    Code128_Barcode = Code128_Barcode & Chr(dummy%)
                    Counter = Counter + 2
                Else
                    Code128_Barcode = Code128_Barcode & Chr(200)
                    UseTableB = True
                End If
            End If
            If UseTableB Then
                Code128_Barcode = Code128_Barcode & Mid(SourceString, Counter, 1)
                Counter = Counter + 1
            End If
        Loop
        For Counter = 1 To Len(Code128_Barcode)
            dummy% = Asc(Mid(Code128_Barcode, Counter, 1))
            dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 100)
            If Counter = 1 Then CheckSum& = dummy%
            CheckSum& = (CheckSum& + (Counter - 1) * dummy%) Mod 103
        Next
        CheckSum& = IIf(CheckSum& < 95, CheckSum& + 32, CheckSum& + 100)
        Code128_Barcode = Code128_Barcode & Chr(CheckSum&) & Chr$(206)
    End If
    Code128 = Code128_Barcode
    Exit Function
testnum:
        mini% = mini% - 1
        If Counter + mini% <= Len(SourceString) Then
            Do While mini% >= 0
                If Asc(Mid(SourceString, Counter + mini%, 1)) < 48 Or Asc(Mid(SourceString, Counter + mini%, 1)) > 57 Then Exit Do
            mini% = mini% - 1
            Loop
        End If
        Return
End Function



-> Ctrl + S -> Lưu và đóng cửa sổ Visual Basic.


Bước 3: Sử dụng hàm Code 128 ở Bước 2.


-> Sử dụng hàm chức năng Code128 đã tạo ở bước 2 bên trên với VBA.


-> Theo thứ tự, chọn ô D5 và thực hiện gõ cú pháp lệnh

                                                               = Code128(C5)


-> Gõ Enter -> xuất hiện kết quả bên dưới:



 

Bước 4: Thay đổi Fonts và kích cỡ font mã vạch - barcode


-> Chọn Tab Home > chọn font Code 128 ở hộp chọn fonts chữ.

 

-> chọn Size 36

 

-> kết quả:




> Xem thêm:

 

    - Tạo mã vạch Code 39 trên Excel.

Zebra Printer

Intermec Printer