excel - Excel VBA 中的批量打印作为一项作业
问题描述
我正在使用 Excel 创建和打印运输标签。用户填写标签(客户名称、数量等)。然后,他们选择需要标签的单位数量以及每个单位必须打印的标签数量。示例输入可能是总共 8 个单元,每个单元有 2 个标签。然后它会打印单元编号为 1、1、2、2、3、3、... 8、8 的标签。我还包括一个功能,允许他们更改单元起始编号,以便他们可以在中途开始一组单位。使用与之前相同的示例,但从单元 3 开始,这将打印单元编号 3、3、4、4、5、5、... 8、8。最后,有时最终单元的数量与其余单元不同的单位。为此,用户可以选中“打印部分单位”并输入单独的单位数量,该数量将仅替换最终单位的现有单位数量。
这是当前代码:
Sub BatchPrint_Click()
'Set the size of the page numbering variable
Dim PageNumbering() As Integer
ReDim PageNumbering(Range("TotalNo").Value - Range("StartNo").Value)
'Fill the page numbering variable with the appropriate page numbers
Dim i As Integer
For i = 0 To Range("TotalNo").Value - Range("StartNo").Value
PageNumbering(i) = Range("StartNo").Value + i
Next i
'Save the quantity for reset
Dim Qty As Variant
Qty = Range("Quantity")
'Batch Print Sheets
Dim ii As Integer
For ii = 0 To Range("TotalNo").Value - Range("StartNo").Value
Range("CurrentPage") = PageNumbering(ii)
Range("CurrentUnitOf") = PageNumbering(ii)
If PageNumbering(ii) = Range("TotalNo").Value And Partial.Value = True Then
Range("Quantity").MergeArea = Range("PartialQuantity")
End If
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, _
Copies:=Range("SetNo").Value, Collate:=True, IgnorePrintAreas:=False
Next ii
'Reset the quantity
Range("Quantity") = Qty
End Sub
这让我想到了我的问题:这会将每个单独单元的标签作为单独的打印作业发送。这通常不是问题,但有时用户可能正在打印 200 多个标签,如果他们在打印时发现标签有错误,则没有真正的方法可以停止所有打印,因为它已发送到打印机作为200多个小工作。有没有办法改变代码,使其全部作为一个打印作业发送?
谢谢!