
在你的工作中,想为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
2167

被折叠的 条评论
为什么被折叠?



