关闭最后一个文档后关闭应用程序(Acrobat,Word,Excel)

时间:2012-12-04 14:50:59

标签: excel vba ms-access ms-word acrobat

我有一些生成Word,Excel或PDF文档的函数。例如,我正在处理的是将报告导出为PDF文件。关闭报告后,它会打开另一个使用LiveCycle ES 8.2创建的PDF表单,并使用数据库中的数据填充它。在此之后,文档被关闭,但由于某种原因,Acrobat的实例仍在前台打开,没有打开文档。

以下是代码:

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。有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我认为你应该补充:

gApp.Exit

之前的

Set gApp = Nothing

这似乎做了勾选,但应用程序仍然存在,隐藏...要实际杀死Acrobat,请在此处使用“Acrobat.exe”尝试此方法: How can I kill task manager processes through VBA code? 这种方法有点像大锤,但它确实有效。

答案 1 :(得分:0)

经过多次测试后,我需要关闭并退出所有文档对象,以确保在没有剩余打开的文档时应用程序退出。

答案 2 :(得分:0)

我刚遇到同样的问题,并找到了以下解决方案:

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

Set AcroApp = Nothing
Set AVDoc = Nothing