2009-12-07 24 views
1

我在LotusScript(Lotus Notes)中使用COM來使Excel在一個工作簿中打印多張PDFCreator,然後將PDFCreator合併爲一個PDF。 問題在於調用Excel的PrintOut方法後立即緊接着PDFCreator的cCombineAll方法,導致從PDF中省略一個或多個工作表。在打印完成之前,Excel的PrintOut方法似乎就會返回。任何確定Excel後臺打印何時完成的方法?

把一個睡在我的代碼工作,但由於印刷時間的變化可能不可靠,所以...
是否有任何Excel的屬性或方法我可以調用,以確定打印是否已經完成?
或者,有沒有辦法使PrintOut方法阻塞,直到打印完成?
我一直無法在Excel的VBA幫助中找到答案。

回答

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 
+0

雖然我用睡眠替代了DoEvents,但它可以完成這項工作。我有偶爾的PDFCreator鎖定,似乎通過對cCountOfPrintjobs重複調用之間等待幾秒鐘來解決。 – 2009-12-21 03:25:55

0

我想其他的方法是「打印」的「背景」參數設置爲false,任何其他操作。

+0

這適用於MS Word,但不幸的是不在Excel中。 – ChrisB 2017-12-05 01:22:45

相關問題