我在LotusScript(Lotus Notes)中使用COM使Excel在一个工作簿中打印几张到PDFCreator,然后将PDFCreator组合成一张PDF。 问题是调用Excel的PrintOut方法后紧跟PDFCreator的cCombineAll方法会导致从PDF中省略一个或多个工作表。看起来Excel的PrintOut方法在打印完成之前就会返回。
在我的代码中使用Sleep可以正常工作,但由于打印时间不同,可能不太可靠,所以......
是否有我可以调用的Excel属性或方法来确定打印是否已完成?
或者,有没有办法让PrintOut方法块直到打印完成?
我无法在Excel的VBA帮助中找到答案。
答案 0 :(得分:0)
来自excelguru.ca的示例代码建议您需要使用PDFCreator的cCountOfPrintJobs
属性来监控作业何时开始和停止打印。打印完成后,您可以执行所需的任何其他操作
Set pdfjob = New PDFCreator.clsPDFCreator
' ...missing out various initialisation steps
'Print the document to PDF
ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
'Wait until the print job has entered the print queue
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
'Wait until PDF creator is finished then release the objects
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
pdfjob.cClose
答案 1 :(得分:0)
我认为另一种方法是设置"背景" " PrintOut"的论点为假。