我编写了一个程序,可以.pdf
从 Excel 电子表格列表中打印多个具有不同文件扩展名的 s。
问题是打印机在Application.SendKeys "^p~", False
调用 line: 之后需要 30 秒到 1 分钟才能接收 pdf。
为了解决这个问题,我曾经Application.Wait (Now + TimeValue("0:01:03"))
在关闭文件之前等待一分钟(加上 3 秒只是为了安全)。对我来说,似乎应该有比仅仅让程序等待更好的方法,所以我环顾四周,发现了一个关于这个被称为Application.OnTime
.
我尝试了其中一个答案的样本:
Sub test2()
ActiveSheet.Cells(1, 1).Value = ActiveSheet.Cells(1, 1).Value + 1
Application.OnTime Now + TimeValue("00:00:5"), "test2"
End Sub
但是,当我试图停止上面的代码时,它一直在无限循环中,直到我使用 Windows 任务管理器杀死了 excel 才停止它。
我希望能够添加一个小消息框或类似的东西,以便用户可以在等待时间之间点击。
因此,当程序等待一分钟时,用户可以手动单击并在下一个 pdf 上启动程序,或者如果他们需要提前停止打印,请单击另一个按钮退出。像这样的东西:
Sub pdfPrinter()
'...
'Insert all the other code here
'...
Application.SendKeys "^p~", False
Application.OnTime Now + TimeValue("00:01:02"), "pdfPrinter"
continue= MsgBox("Click Retry to print again, or cancel to stop printer.", vbRetryCancel)
If continue = vbRetry Then
Call pdfPrinter
ElseIf continue = vbCancel Then
Exit Sub
End If
End Sub