2012-12-04 165 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