循环打印是将明细表的每一行作为数据源打印一次,打印一次也可能是多份

Sub 打印()
On Error Resume Next
Dim obj As Object
Set obj = Application.COMAddIns.Item("prjAddin.Office_Addin").Object
For i = Range("I3") To Range("K3") 'Cells(Rows.Count, 4).End(3).Row
Range("O3") = Cells(i, 3)
obj.execFormula "A;B"
If Cells(7, 7) = "" Then MsgBox "请指定打印机!": Exit Sub
Sheet2.PrintOut ActivePrinter:=Cells(7, 7) ', Copies:=Cells(i, 11) '打印Sheet1表和打印份数所在的列Copies:=Cells(i, 7),本例未启用打钱份数,如果启用,请去掉Sheet1.PrintOut 'Copies:=Cells(i, 7)中间的"'"
'Sheet1.PrintOut ActivePrinter:="Canon MP280 series Printer"等于后面是指定打印机的名称
Next
Set obj = Nothing
End Sub
Sub 打印机列表()
On Error Resume Next
Dim arr(0 To 10)
Set WshNetwork = CreateObject("WScript.Network")
Set oPrinters = WshNetwork.EnumPrinterConnections
For i = 0 To oPrinters.Count - 1 Step 2
arr(i) = oPrinters.Item(i + 1)
Next
ActiveSheet.Unprotect "123456" '解锁模板
With [G7].Validation
.Delete
.Add Type:=xlValidateList, Formula1:=arr(0) & "," & arr(2) & "," & arr(4) & "," & arr(6) & "," & arr(8) & "," & arr(10)
End With
ActiveSheet.Protect "123456" '锁定模板
End Sub

Sub 生成打印序号()
Dim obj As Object
Set obj = Application.COMAddIns.Item("prjAddin.Office_Addin").Object
obj.execFormula "生成打印序号"
Set obj = Nothing
End Sub
Sub 执行打印()
Dim obj As Object
Set obj = Application.COMAddIns.Item("prjAddin.Office_Addin").Object

If obj.GetOperationName = "[填表]" Or obj.GetOperationName = "[修改数据]" Then
res = obj.SaveReport
If res = True Then
Call 生成打印序号
Call 打印
End If
Else
Call 生成打印序号
Call 打印
End If
Set obj = Nothing
End Sub
模板下载

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。