2012-12-04 183 views
1

後,我有一個生成Word,Excel或PDF文檔的一些功能。例如,我正在處理的是將報告導出到PDF文件。關閉報告後,它會打開使用LiveCycle ES 8.2創建的另一個PDF表單,並使用數據庫中的數據填充該表單。在此之後,文檔被關閉,但由於某種原因,Acrobat的實例仍然在前臺打開,沒有打開任何文檔。關閉應用程序(Acrobat中的Word,Excel)關閉最後一個文件

下面是代碼:

DoCmd.OpenReport "myReport", acViewPreview 
DoCmd.OutputTo acOutputReport, "", acFormatPDF, "C:\myReport.pdf", False 
DoCmd.Close acReport, "myReport" 

Dim gApp, avDoc, pdDoc, jso 

Set gApp = CreateObject("AcroExch.app") 
Set avDoc = CreateObject("AcroExch.AVDoc") 
If avDoc.Open(exprPDF, "") Then 
    Set pdDoc = avDoc.GetPDDoc() 
    Set jso = pdDoc.GetJSObject 

    '[...] 

    pdDoc.Save PDSaveIncremental, FileNm 'Save changes to the PDF document 
    pdDoc.Close 'Close the PDF document 
End If 

avDoc.Close (True) 
Set gApp = Nothing 
Set avDoc = Nothing 

myReport從未打開Acrobat中的任何實例。行avDoc.Open呢。我想在我做avDoc.close時關閉Acrobat。有任何想法嗎?

+0

我注意到兩兩件事,我會嘗試...'gApp.Close'後'avDoc'設置'gApp'不了了之,這樣你就不會試圖通過爲項目開混淆的東西/關閉無序 – SeanC

+0

聽起來像你有不合理的期望。通常關閉文檔不應該關閉顯示文檔的應用程序。有沒有'gApp.Quit'方法或者simalar? –

+0

@SeanCheshire已經嘗試設置一切,沒有什麼,但它並沒有太大變化。至於gApp.Close和gApp.Quit,這兩種方法都存在並且什麼都不做。我的腳本填充PDF表單然後保存。它對用戶必須完全透明。 – dnLL

回答

0

一些測試後,我需要近距離與退出所有文檔對象,以確保如果沒有剩餘打開的文檔的應用程序退出。

0

我剛剛經歷過同樣的問題,並發現了以下解決方案:

AVDoc.Close (True) 
**AcroApp.Hide** 

Set AcroApp = Nothing 
Set AVDoc = Nothing 
1

我認爲你應該加上:

gApp.Exit 

Set gApp = Nothing 

這似乎做

蜱,但應用程序仍然存在,隱藏着......實際上殺害的Acrobat這裏試試這個方法與「Acrobat.exe」: How can I kill task manager processes through VBA code? 這種方法是有點大錘的,但它的作品。

+0

老實說,我還沒有在該項目中工作多年,我沒有做任何VBA了時下但這可能是其他開發商我想類似的問題非常有用。 – dnLL

+1

我只是真實目的是試圖代碼,但它只是似乎工作。儘管沒有文件更改和保存50個文檔的Acrobat抱怨說達到的文件也能打開的最大數量,之後是明顯的打開,我看到的Acrobat程序出現在任務欄中消失。我甚至增加了出口語句前「gApp.CloseAllDocs」只是爲了確保...另外在關閉AVDoc和PDDoc。 – blablubbb