|
楼主 |
发表于 2020-7-6 15:10
|
显示全部楼层
本帖最后由 boy8199 于 2020-7-6 16:49 编辑
- <div class="blockcode"><blockquote>'升级版,可跳首列,跳首行,间隔行
复制代码
- Public Function 批量添加条码(标签打印表 As Worksheet, 数据表 As Worksheet, 数据列号 As String, 数据开始行 As Long, 数据结束行 As Long) As Long
-
- Dim 码值数组() As Variant
- If 数据开始行 < 1 Then 数据开始行 = 1
-
- If 数据结束行 < 数据开始行 Then 数据结束行 = 数据开始行
-
- If 数据开始行 = 数据结束行 Then
- ReDim 码值数组(1 To 1, 1 To 1)
-
- 码值数组(1, 1) = 数据表.Range(数据列号 & 数据开始行).Value
- Else
- 码值数组 = 数据表.Range(数据列号 & 数据开始行 & ":" & 数据列号 & 数据结束行)
- End If
-
-
- 批量条形码生成 条码打印表:=标签打印表, 条码数值数组:=码值数组, 开始序号:=3, 条码高度:=60, 条码宽度:=60, 每行个数:=5, _
- 单元格左边距:=3, 单元格上边距:=2, 开始行号:=3, 开始列号:=1, 行间隔数:=2, 列间隔数:=0
- End Function
- Private Function 批量条形码生成(条码打印表 As Worksheet, 条码数值数组() As Variant, 开始序号 As Long, _
- 条码高度 As Long, 条码宽度 As Long, 每行个数 As Long, _
- Optional 单元格左边距 As Long = 1, Optional 单元格上边距 As Long = 1, _
- Optional 开始行号 As Long = 1, Optional 开始列号 As Long = 1, _
- Optional 行间隔数 As Long = 0, Optional 列间隔数 As Long = 0)
- On Error GoTo errHandler
-
- Application.ScreenUpdating = False
- Dim shp As Shape
- If 条码打印表.Shapes.count > 0 Then
- For Each shp In 条码打印表.Shapes
- If shp.Type = msoOLEControlObject Then
- Select Case shp.OLEFormat.Object.progID
- Case "BARCODE.BarCodeCtrl.1"
- shp.Delete
- End Select
- End If
- Next
- End If
-
- Dim 序号 As Long '第一行从第几列开始
- Dim 条码左边距 As Long: Dim 条码上边距 As Long
- Dim 行号 As Long: Dim 列号 As Long
- For 序号 = 开始序号 To 开始序号 + UBound(条码数值数组, 1) - 1
- ' 条码左边距 = ((序号 - 1) Mod 每行个数) * 单元格宽度 * 6.208 + 单元格左边距'
- ' 条码上边距 = Int((序号 - 1) / 每行个数) * 单元格高度 + 单元格上边距
- 行号 = 开始行号 - 1 + Int((序号 - 1) / 每行个数) + 1 + Int((序号 - 1) / 每行个数) * 行间隔数
- 列号 = 开始列号 - 1 + ((序号 - 1) Mod 每行个数) + 1 + ((序号 - 1) Mod 每行个数) * 列间隔数
- 条码左边距 = 条码打印表.Cells(行号, 列号).Left + 单元格左边距
- 条码上边距 = 条码打印表.Cells(行号, 列号).Top + 单元格上边距
- If 条码数值数组(序号 - 开始序号 + 1, 1) <> "" Then
- With 条码打印表.OLEObjects.Add(ClassType:="BARCODE.BarCodeCtrl.1", Link:=False, _
- DisplayAsIcon:=False, Left:=条码左边距, Top:=条码上边距, _
- Width:=条码宽度, Height:=条码高度)
- .Name = "myBarCodeCtr" & 序号 '设置条码控件名称
- .Object.Direction = 0 '条码横向\纵向
- .Object.Style = 11 '7 code128 '6 - code39码,需要以*号首尾 '11 二维码 '条形码数值太长,条码必须相应的加长
- .Object.LineWeight = 0
- .Object.Value = 条码数值数组(序号 - 开始序号 + 1, 1)
- .ShapeRange.ScaleHeight 1, msoFalse, msoScaleFromTopLeft
- .ShapeRange.ScaleWidth 1, msoFalse, msoScaleFromTopLeft
- End With
- End If
- Next
- Application.ScreenUpdating = True
- Exit Function
- errHandler:
-
- Application.ScreenUpdating = True
- MsgBox "添加条码出现错误: " & Err.Number & "-" & Err.Description
-
- End Function
复制代码
|
|