尝试多次打印相同的Excel工作表(例如100),每次增加一个单元格(例如单元格4F)。
我尝试使用
Workbook_BeforePrint
增加单元格,但需要与每个打印纸张的“选择打印机”对话框进行交互。
是否有可能做出类似的事情:
a = getIntegerUserInput()
for i in 1..a
increment 4F with one
print the sheet suppressing the "select printer" dialog
end for
干杯
答案 0 :(得分:4)
您是否选择了默认打印机?
我用过这个:
Sub printinc()
For i = 0 To 3
Range("A1").Value = Range("A1").Value + 1
Sheets("Sheet1").PrintOut
Next
End Sub
每次打印4份增加单元格A1值的副本,而不提示我进行设置或打印机选择。
答案 1 :(得分:3)
要打印工作表,您可以使用PrintOut
使用此类代码(假设您知道要打印的打印机):
Sub PrintFile()
Dim curPrinter As String
curPrinter = Application.ActivePrinter
Application.ActivePrinter = "Myprinter"
ActiveWindow.SelectedSheets.PrintOut
Application.ActivePrinter = curPrinter
End Sub
因此,您可以创建一个循环来增加单元格并使用增量打印工作表。
顺便说一句,你可以使用Before_print
来完成它,如果你不想显示打印对话框,你可以在调用程序Cancel
时将Private Sub Workbook_BeforePrint( Cancel As Boolean)
设置为False(参考MSDN)
您还可以阅读此SO线程以防止显示打印对话框:How do you prevent printing dialog when using Excel PrintOut method。
[编辑]看到Seyren的答案,找到你想要的工作解决方案。但是,如果真的想要循环100次,请注意性能。
答案 2 :(得分:2)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
'//supress recursion into this event when we print
Application.EnableEvents = False
'//increment
If Not IsNumeric(ActiveSheet.Range("A1").Value) Then ActiveSheet.Range("A1").Value = 0
ActiveSheet.Range("A1").Value = ActiveSheet.Range("A1").Value + 1
'//do a default print
ActiveSheet.PrintOut
Application.EnableEvents = True
'//prevent the default print
Cancel = True
End Sub