Cần giúp tạo form in mã vạch cho vật tư theo SL cụ thể. (1 người xem)

  • Thread starter Thread starter zarra
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

zarra

Thành viên mới
Tham gia
14/11/24
Bài viết
2
Được thích
0
Chào cả nhà,
Mình cần giúp tạo code để in mã vạch cho Vật tư theo Danh sách và số lượng tùy chọn, có Barcode:
- Sheet DATA: TỔNG các mã vật tư đang quản lý, cột SỐ LƯỢNG là sl tem cần in
- Sheet FORM: tem in mã vạch ( khổ giấy ngang 100x50).
Mong cả nhà giúp đỡ.
Thanks!!!
 

File đính kèm

Chào cả nhà,
Mình cần giúp tạo code để in mã vạch cho Vật tư theo Danh sách và số lượng tùy chọn, có Barcode:
- Sheet DATA: TỔNG các mã vật tư đang quản lý, cột SỐ LƯỢNG là sl tem cần in
- Sheet FORM: tem in mã vạch ( khổ giấy ngang 100x50).
Mong cả nhà giúp đỡ.
Thanks!!!
Bài này có lẽ phải đăng vào mục lập trình thì đúng hơn.
 

File đính kèm

  • Screenshot (249).png
    Screenshot (249).png
    127.6 KB · Đọc: 22
Mình cần giúp tạo code để in mã vạch cho Vật tư theo Danh sách và số lượng tùy chọn, có Barcode:
- Sheet DATA: TỔNG các mã vật tư đang quản lý, cột SỐ LƯỢNG là sl tem cần in
- Sheet FORM: tem in mã vạch ( khổ giấy ngang 100x50).
Bạn xem file đính kèm.
Có 2 kiểu in: một là in tem 100 x 50 của bạn, hai là dàn trang trên A4.
Nhớ cài Font barcode 128.ttf (đính kèm).
Tôi dùng hàm chuyển đổi font barcode của Philip Treacy.

JavaScript:
Public Function Code128(SourceString As String)
    'Code cua Philip Treacy, Feb 2014
    '# Barcode 128 chua tat ca cac ky tu so, chu va ky tu dac biet
    '# Ket qua: - Hình barcode voi font CODE128.TTF
    '           - Chuôi rong neu barcode sai qui cach
    Dim Counter As Long, CheckSum As Long, mini As Long, dummy As Long
    Dim UseTableB As Boolean
    Dim Code128_Barcode As String
    
    If Len(SourceString) > 0 Then
        'Kiem tra cac ky tu hop le
        For Counter = 1 To Len(SourceString)
            Select Case Asc(Mid(SourceString, Counter, 1))
                Case 32 To 126, 203
                Case Else
                    MsgBox "Ky tu khong hop le." & vbCrLf & vbCrLf & "Vui long chi su dung ky tu trong bang ma ASCII", vbCritical
                    Code128 = ""
                    Exit Function
            End Select
        Next
        Code128_Barcode = ""
        UseTableB = True
        Counter = 1
        Do While Counter <= Len(SourceString)
            If UseTableB Then
                'Check if we can switch to Table C
                mini = IIf(Counter = 1 Or Counter + 3 = Len(SourceString), 4, 6)
                GoSub testnum
                If mini < 0 Then 'Use Table C
                    If Counter = 1 Then
                        Code128_Barcode = Chr(205)
                    Else 'Switch to table C
                        Code128_Barcode = Code128_Barcode & Chr(199)
                    End If
                    UseTableB = False
                Else
                    If Counter = 1 Then Code128_Barcode = Chr(204) 'Starting with table B
                End If
            End If
            If Not UseTableB Then
                'We are using Table C, try to process 2 digits
                mini = 2
                GoSub testnum
                If mini < 0 Then 'OK for 2 digits, process it
                    dummy = Val(Mid(SourceString, Counter, 2))
                    dummy = IIf(dummy < 95, dummy + 32, dummy + 100)
                    Code128_Barcode = Code128_Barcode & Chr(dummy)
                    Counter = Counter + 2
                Else 'We haven't got 2 digits, switch to Table B
                    Code128_Barcode = Code128_Barcode & Chr(200)
                    UseTableB = True
                End If
            End If
            If UseTableB Then
                'Process 1 digit with table B
                Code128_Barcode = Code128_Barcode & Mid(SourceString, Counter, 1)
                Counter = Counter + 1
            End If
        Loop
        'Calculation of the checksum
        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
        'Calculation of the checksum ASCII code
        CheckSum = IIf(CheckSum < 95, CheckSum + 32, CheckSum + 100)
        'Add the checksum and the STOP
        Code128_Barcode = Code128_Barcode & Chr(CheckSum) & Chr$(206)
    End If
    Code128 = Code128_Barcode
    Exit Function
testnum:
        'if the mini% characters from Counter are numeric, then mini%=0
        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


Screen Shot 2024-11-15 at 11.12.09.png
 

File đính kèm

Lần chỉnh sửa cuối:
Chào cả nhà,
Mình cần giúp tạo code để in mã vạch cho Vật tư theo Danh sách và số lượng tùy chọn, có Barcode:
- Sheet DATA: TỔNG các mã vật tư đang quản lý, cột SỐ LƯỢNG là sl tem cần in
- Sheet FORM: tem in mã vạch ( khổ giấy ngang 100x50).
Mong cả nhà giúp đỡ.
Thanks!!!
Tham khảo:
Click chọn Tên vật tư ở A4. Kết quả sẽ có được mã vạch (Code128) ở A3, và Mã vật tư ở A2
Code này được sưu tầm trên GPE này.
 

File đính kèm

Bạn xem file đính kèm.
Có 2 kiểu in: một là in tem 100 x 50 của bạn, hai là dàn trang trên A4.
Nhớ cài Font barcode 128.ttf (đính kèm).
Tôi dùng hàm chuyển đổi font barcode của Philip Treacy.

JavaScript:
Public Function Code128(SourceString As String)
    'Code cua Philip Treacy, Feb 2014
    '# Barcode 128 chua tat ca cac ky tu so, chu va ky tu dac biet
    '# Ket qua: - Hình barcode voi font CODE128.TTF
    '           - Chuôi rong neu barcode sai qui cach
    Dim Counter As Long, CheckSum As Long, mini As Long, dummy As Long
    Dim UseTableB As Boolean
    Dim Code128_Barcode As String
   
    If Len(SourceString) > 0 Then
        'Kiem tra cac ky tu hop le
        For Counter = 1 To Len(SourceString)
            Select Case Asc(Mid(SourceString, Counter, 1))
                Case 32 To 126, 203
                Case Else
                    MsgBox "Ky tu khong hop le." & vbCrLf & vbCrLf & "Vui long chi su dung ky tu trong bang ma ASCII", vbCritical
                    Code128 = ""
                    Exit Function
            End Select
        Next
        Code128_Barcode = ""
        UseTableB = True
        Counter = 1
        Do While Counter <= Len(SourceString)
            If UseTableB Then
                'Check if we can switch to Table C
                mini = IIf(Counter = 1 Or Counter + 3 = Len(SourceString), 4, 6)
                GoSub testnum
                If mini < 0 Then 'Use Table C
                    If Counter = 1 Then
                        Code128_Barcode = Chr(205)
                    Else 'Switch to table C
                        Code128_Barcode = Code128_Barcode & Chr(199)
                    End If
                    UseTableB = False
                Else
                    If Counter = 1 Then Code128_Barcode = Chr(204) 'Starting with table B
                End If
            End If
            If Not UseTableB Then
                'We are using Table C, try to process 2 digits
                mini = 2
                GoSub testnum
                If mini < 0 Then 'OK for 2 digits, process it
                    dummy = Val(Mid(SourceString, Counter, 2))
                    dummy = IIf(dummy < 95, dummy + 32, dummy + 100)
                    Code128_Barcode = Code128_Barcode & Chr(dummy)
                    Counter = Counter + 2
                Else 'We haven't got 2 digits, switch to Table B
                    Code128_Barcode = Code128_Barcode & Chr(200)
                    UseTableB = True
                End If
            End If
            If UseTableB Then
                'Process 1 digit with table B
                Code128_Barcode = Code128_Barcode & Mid(SourceString, Counter, 1)
                Counter = Counter + 1
            End If
        Loop
        'Calculation of the checksum
        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
        'Calculation of the checksum ASCII code
        CheckSum = IIf(CheckSum < 95, CheckSum + 32, CheckSum + 100)
        'Add the checksum and the STOP
        Code128_Barcode = Code128_Barcode & Chr(CheckSum) & Chr$(206)
    End If
    Code128 = Code128_Barcode
    Exit Function
testnum:
        'if the mini% characters from Counter are numeric, then mini%=0
        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


View attachment 305603
Cảm ơn Bạn đã hỗ trợ. file này mình điều chỉnh một xíu là sử dụng được rồi.
Chúc cả nhà sức khỏe!
Bài đã được tự động gộp:

Tham khảo:
Click chọn Tên vật tư ở A4. Kết quả sẽ có được mã vạch (Code128) ở A3, và Mã vật tư ở A2
Code này được sưu tầm trên GPE này.
cám ơn bạn đã hỗ trợ!!!
 
Anh @ongke0711 ơi, sao em quetsbawngf trình quét Barcode cũng chỉ ra mà vật tư thôi,không hiên só lượng tốn ạ, và mong anh chỉnh trên Label là mà vật tư của em là 041560 nhưng bên label in ra chỉ hiện 41560.
Mong anh giúp.
 
Anh @ongke0711 ơi, sao em quetsbawngf trình quét Barcode cũng chỉ ra mà vật tư thôi,không hiên só lượng tốn ạ, và mong anh chỉnh trên Label là mà vật tư của em là 041560 nhưng bên label in ra chỉ hiện 41560.
Mong anh giúp.
Em gõ vài dòng mã mong muốn dùng cho barcode và gửi lên nhé.
 
Em muốn khi quét bằng trình quét hiện luuon SL Tồn đầu, nhập, xuất, tồn cuối.
Dòng mã vật tư chuyển thành text luôn ạ, ví dụ phải là 041560 chứ không phải 41560.1234-1.png
Bài đã được tự động gộp:

1234-2.png
 
Em muốn khi quét bằng trình quét hiện luuon SL Tồn đầu, nhập, xuất, tồn cuối.
Dòng mã vật tư chuyển thành text luôn ạ, ví dụ phải là 041560 chứ không phải 41560.
Bài đã được tự động gộp:

View attachment 306605

- Làm 1 cái file excel làm ví dụ khó dữ vậy hả em?
- Em mong muốn barocde phải thể hiện mã hàng + NXT vậy cái mã để chuyển thành barcode của em đâu? Cái qui ước để trích xuất dữ liệu sau khi quét mã đâu?? Chẳng lẻ anh phải tự qui ước luôn cho em.
Vd: MaVT (xxxxxx) + Ton (#xxxx) + Nhap (#xxxx) + ...
==> mã xxxxxx#xxxx#xxxx#......
 
À, em không rành, nên cứ tưởng quét mã ra luôn nhập, xuất, tồn. Vậy phải ghép vô hả anh, như vầy 041560-9-4-10-3 hả anh.
Xin lỗi anh @ongke0711
 
À, em không rành, nên cứ tưởng quét mã ra luôn nhập, xuất, tồn. Vậy phải ghép vô hả anh, như vầy 041560-9-4-10-3 hả anh.
Xin lỗi anh @ongke0711
Em phải suy nghĩ thật kỹ qui ước tạo mã để tránh có sai sót có thể phát sinh.
- Nếu dùng dấu "-" thì khi gặp số âm thì sao?
- Nếu mã hàng có dấu "-"
Sau khi tạo mã xong thì cứ áp mã đó vô file tạo barcode mẫu thôi.
 
Dạ em cám ơn anh @ongke0711 đã chỉ, về nguyên tắc bắt buộc cty, không cho tồn âm ạ, và mã vật tư là chuỗi và không có dấu "-" ạ. Mong anh chỉnh cho khi in Barcode không bị mất số 0 đầu ạ.
Bài đã được tự động gộp:

Viêt Nam thăng rồi anh @ongke0711 ơi, chúc mừng đội tuyển VN!!!!!!!!
Bài đã được tự động gộp:

Khi in tem,mỗi mã vật tư 1 tờ thôi thì chỉnh code sao anh @ongke0711 , và trong mã quét có xuống dòng được không anh???123456-1.png
 
Lần chỉnh sửa cuối:
Anh @ongke0711 cột mã quét mình dùng công thức lấy giá trị không được hả anh????
Phải gõ trực tiếp vào hả anh???
Bài đã được tự động gộp:

Như cột B2:B6 em dùng công thức =I2:I6, lỗi anh ơi123456-2.png
 
Web KT

Bài viết mới nhất

Back
Top Bottom