明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 624|回复: 1

[讨论] 有没有人搞过CODE128的lisp,EXCEL用VBA可以实现的

[复制链接]
发表于 2016-7-13 15:45 | 显示全部楼层 |阅读模式
本帖最后由 xymxydt 于 2016-7-13 16:19 编辑

现在的图纸很想能够自动生成BARCODE128B条码,但是不懂LISP,制作不出来

BARCODE128B有字体能够直接调用,但是需要在字符串前面增加初始码,在尾部增加校验码和结束码,这样一来就头大了,有没有人有兴趣搞一个出来?

我想要的结果就是,图框中有三个属性DR1-DR2-DR3(条码中包含两个“-”,即:"ABC-1234-cde")
这三个值有任何一个变动,条码自动重新生成一次。这样以后出图交图都可能通过BARCODE扫码枪进行操作了。

我有BARCODE128字体和VBA的语句算法

以下是在EXCEL中VBA里的计算方法:
Function Code128B(tar As Range)   '128B码:ChrW(204).
Dim s$, i%, ss$, j%, curR%, checkB%
curR = tar.Row
s = tar.Value
checkB = 1  '开始位的码值为104 mod 103 =1
For i = 1 To Len(s)
    ss = Mid(s, i, 1)
    j = Asc(ss) '没过滤无效字符,比如汉字.
    If j < 135 Then
        j = j - 32
    ElseIf j > 134 Then
        j = j - 100
    End If
    checkB = (checkB + i * j) Mod 103   '计算校验位
Next
If checkB < 95 And checkB > 0 Then  '有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符).
    checkB = checkB + 32
ElseIf checkB > 94 Then '字体设置时,个别字模被定义了2个值.观察字体文件时能发现.
    checkB = checkB + 100
End If
Code128B = ChrW(204) & s & IIf(checkB, ChrW(checkB), Chr(32)) & ChrW(206)  'ChrW(32)无法正确返回
End Function

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-7-13 15:54 | 显示全部楼层
我现在可能通过EXCEL中输入图号,得到BARCODE码后,粘贴到图形中然后得到BARCODE128条形码,但是这样每一张图纸都要复制粘贴一次,工作量大,而且容易出来条码与图形不能对应的情况,所以期望高手能出手搞一个LISP出来
附件是EXCEL文件,需要启动安全宏才能正常使用,而且需要使用CODE128字体

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 03:36 , Processed in 0.172587 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表