VBA压缩文件错误

3

我正在使用类似下面的代码将一些文件添加到zip文件夹中:

Set oApp = CreateObject("Shell.Application")
oApp.Namespace(CVar(strDest)).CopyHere CVar(strSource)

这通常可以正常工作,但有时候我会遇到一个错误:

"(压缩文件夹错误) 无法创建输出文件"。这个错误是异步地在我的VBA代码之外引发的,因此我无法捕获它以采取补救措施。

如果我进入中断模式并回溯到:

oApp.Namespace(CVar(strDest)).CopyHere CVar(strSource)

然后文件就被正确添加了。

我猜测这个问题可能是由于压缩文件或源文件上存在某种锁定导致的,但我不确定如何检查。需要注意的是,正在添加的文件是从Microsoft Access 2007创建的pdf文件,并且我们使用完全限定路径,代码运行如下,每个zip文件最多创建10个pdf:

  1. 创建Zip

  2. 运行此循环:

  对于每个要运行的报告
    创建Pdf ' using DoCmd.OutputTo acOutputReport, "rptHame", acFormatPDF, strReportName
    添加到Zip
  结束循环

有没有办法修复此错误或捕获“无法创建输出文件”错误? 谢谢


1
这个问题有任何更新吗?我的老板也遇到了同样的问题,正在寻找解决方案。 - Kevin Crowell
2个回答

1

0

两个想法,都不太可能解决问题:

  1. 您是否尝试显式提供 FALSE 作为下一个参数,即 AutoStart 参数?帮助文件说它默认为 FALSE,但也许它在生成 PDF 后打开它们,所以它们仍然处于打开状态?

  2. 添加几秒钟的 SLEEP(请参见 使代码进入睡眠状态 的代码)。

  3. 或者,循环遍历所有报告并生成所有报告,然后启动一个新循环将每个报告复制到 zip 文件中,而不是为每个报告生成/复制。在两个循环之间有几秒钟的休眠可能不会有害(假设问题是异步 PDF 生成过程在复制启动时尚未完全完成)。


  1. 绝对不要打开它们。
  2. 尝试添加了延迟……但没有成功。
  3. 正在考虑尝试那个。得看看我能不能做到…
- MT.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接