我有一些生成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。有什么想法吗?
答案 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