【VBA研究】Excel条码控件生成的Code-39码不能识别问题

作者:iamlaosong

在做一个回执打印工具时,业务部门要求加上条码,以便将来录入查找。生成条码用的是Excel自带的控件,以前也用过,那次生成的是128码,这次希望和邮件条码一致,采用code-39码。如下图所示:

条码是生成出来了,可是打印出来却无法扫描识别。到底是什么原因呢?

上网查找也没找到答案,问题就搁置住了,只好先不打印条码用着,再想办法解决。

反复思考这个问题,突然灵光一闪,记得以前没有控件生成条码时,好像两头要加上“*”号,于是,将要生成条码的邮件号码两边加上“*”号,再用这个字符串生成条码,打印出来果然可以正常识别,如下图所示:

真是:踏破铁鞋无觅处,得来全不费工夫。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用VBA编写一个生成Code128B条形的函数,然后在Excel中调用该函数来生成条形。以下是一个示例代: ``` Function GenerateCode128BBarcode(ByVal value As String) As String Dim barcode As String Dim checksum As Integer Dim i As Integer ' Start character barcode = "11010000100" checksum = 104 ' Encode each character For i = 1 To Len(value) Dim code As Integer Select Case Asc(Mid(value, i, 1)) Case 32 To 126 ' ASCII characters code = Asc(Mid(value, i, 1)) - 32 Case 128 To 255 ' Extended ASCII characters code = Asc(Mid(value, i, 1)) - 100 Case Else ' Invalid character GenerateCode128BBarcode = "" Exit Function End Select barcode = barcode & Code128BTable(code) checksum = checksum + code * i Next i ' Calculate checksum checksum = checksum Mod 103 barcode = barcode & Code128BTable(checksum) ' Stop character barcode = barcode & "1100011101011" GenerateCode128BBarcode = barcode End Function Function Code128BTable(ByVal code As Integer) As String Dim table As String Select Case code Case 0 To 9 table = "11011001100" Case 10 To 19 table = "11001101100" Case 20 To 29 table = "11001100110" Case 30 To 39 table = "10010011000" Case 40 To 49 table = "10010001100" Case 50 To 59 table = "10001001100" Case 60 To 69 table = "10011001000" Case 70 To 79 table = "10011000100" Case 80 To 89 table = "10001100100" Case 90 To 99 table = "11001001000" Case 100 To 109 table = "11001000100" Case 110 To 119 table = "11000100100" Case 120 To 129 table = "10110011100" Case 130 To 139 table = "10011011100" Case 140 To 149 table = "10011001110" Case 150 To 159 table = "10111001100" Case 160 To 169 table = "10011101100" Case 170 To 179 table = "10011100110" Case 180 To 189 table = "11001110010" Case 190 To 199 table = "11001011100" Case 200 To 209 table = "11001001110" Case 210 To 219 table = "11011100100" Case 220 To 229 table = "11001110100" Case 230 To 239 table = "11101101110" Case 240 To 249 table = "11101001100" Case 250 To 255 table = "11100101100" End Select Code128BTable = table End Function ``` 要在Excel生成条形,只需在单元格中输入以下公式: ``` =GenerateCode128BBarcode("VALUE") ``` 其中,VALUE是要编的字符串。将VALUE替换为实际的值即可生成条形

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值