如何快速生成条形码和二维码


在你的工作中,想为Excel表格中的数据生成条形码和二维码吗?通过一个精密设计的VBA脚本,你可以在场实现这一功能。这里是一个实现该功能的脚本:

脚本功能

该脚本会在Excel表格中,通过指定的数据列,在这列之后的一列生成条形码和二维码。选择条码样式,如“Code-128”和“QR Code”。根据自定义行号,从第2行开始生成。

脚本详情解释

下面将进行脚本的每一部分详情解释。

1. 初始化

脚本从关闭屏幕刷新和删除旧有条码开始:

Application.ScreenUpdating = False
ActiveSheet.Shapes.SelectAll
Selection.Delete

2. 提示用户输入列号

通过一个InputBox,让用户选择要生成条码的列:

colN = InputBox("请输入要生成条码的列号?a~z/A~Z")

3. 使用循环生成条码

为表格中指定列的数据生成条码,含有二维码和条形码两种样式:

For rowN = 2 To endRow
   ' 插入二维码
   With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1")
       .Name = "BarCodeCtrl" & rowN
       .Object.Style = 11
       .Left = Range(Chr(Asc(colN) + 1) & rowN).Left
       .Top = Range(Chr(Asc(colN) + 1) & rowN).Top
       .Height = 100
       .Width = 100
       .Object.Value = Cells(rowN, colN).Text
   End With

   ' 插入Code-39条形码
   With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1")
       .Name = "BarCodeCtrl" & rowN
       .Object.Style = 6
       .Left = Range(Chr(Asc(colN) + 2) & rowN).Left
       .Top = Range(Chr(Asc(colN) + 2) & rowN).Top
       .Height = 100
       .Width = 200
       .Object.Value = Cells(rowN, colN).Text
   End With
Next

4. 完成后处理

脚本最后打开屏幕刷新,确保所有操作都已生效:

Application.ScreenUpdating = True

总结

该脚本适合在Excel中需要大量快速生成条形码和二维码的场景,能夠为您的工作提高效率。尽管脚本已经考虑到较多详节,但在实际实施时,还需要根据其他需求做选择和优化。

完整代码:

Sub 生成条形码()
   '*************************************************************************
   '功能:
   '     可以在要生成条码数据列的后面一列生成条码
   '     条码样式Object.Style要在控件其它属性前设定.
   '     起始行号为第2行开始,也可以修改为其它行号
   '编程:BH4BIN
   '时间:2022年5月14日
   '*************************************************************************
   Dim rowN As Long       '行号
   Dim endRow As Long     '结束行号
   Dim colN As String
   
   Application.ScreenUpdating = False  '----关闭屏幕刷新
   ActiveSheet.Shapes.SelectAll        '----删除全部旧条码
   Selection.Delete                    '----删除全部旧条码
   
   colN = InputBox("请输入要生成条码的列号?a~z/A~Z")
   
   '输入列的最后一行行号
   endRow = Range(colN & Cells.Rows.Count).End(xlUp).Row
   
   '使用循环生成条码
   For rowN = 2 To endRow

      '插入二维码
       With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1")
           '条码名称可以自定,这里以行号命名
           .Name = "BarCodeCtrl" & rowN
           '“6”的样式为“Code-139”
           '“7”代表条码样式为“code 128”,
           '“11”的样式为“QR Code ”
           '其他参见控件右键菜单-属性内的选项,
           '注意:改变样式要在其他选项之前
           .Object.Style = 11
           '条码左边缘位置,
           .Left = Range(Chr(Asc(colN) + 1) & rowN).Left
            '条码上缘位置
           .Top = Range(Chr(Asc(colN) + 1) & rowN).Top
           '条码高度
           .Height = 100
           '条码宽度
           .Width = 100
           ' 对生成的条码赋值,这里不要使用.value,用.Text赋值会减少很多错误
           .Object.Value = Cells(rowN, colN).Text
       End With
       
       '插入Code-39条码
       With ActiveSheet.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1")
           '条码名称可以自定,这里以行号命名
           .Name = "BarCodeCtrl" & rowN
           '“6”的样式为“Code-139”
           '“7”代表条码样式为“code 128”,
           '“11”的样式为“QR Code ”
           '其他参见控件右键菜单-属性内的选项,
           '注意:改变样式要在其他选项之前
           .Object.Style = 6
           '条码左边缘位置,
           .Left = Range(Chr(Asc(colN) + 2) & rowN).Left
            '条码上缘位置
           .Top = Range(Chr(Asc(colN) + 2) & rowN).Top
           '条码高度
           .Height = 100
           '条码宽度
           .Width = 200
           ' 对生成的条码赋值,这里不要使用.value,用.Text赋值会减少很多错误
           .Object.Value = Cells(rowN, colN).Text
       End With
   Next
   '单击功能选项卡的 开发工具-设计模式
   Application.CommandBars.ExecuteMso "DesignMode"
   '打开屏幕刷新
   Application.ScreenUpdating = True
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值