有什么方法可以确定Excel后台打印何时完成?

时间:2009-12-07 05:58:41

标签: excel vba com

我在LotusScript(Lotus Notes)中使用COM使Excel在一个工作簿中打印几张到PDFCreator,然后将PDFCreator组合成一张PDF。 问题是调用Excel的PrintOut方法后紧跟PDFCreator的cCombineAll方法会导致从PDF中省略一个或多个工作表。看起来Excel的PrintOut方法在打印完成之前就会返回。

在我的代码中使用Sleep可以正常工作,但由于打印时间不同,可能不太可靠,所以......
是否有我可以调用的Excel属性或方法来确定打印是否已完成?
或者,有没有办法让PrintOut方法块直到打印完成?
我无法在Excel的VBA帮助中找到答案。

2 个答案:

答案 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"的论点为假。