我使用类似下面的代码将一些文件添加到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文件:
创建Zip
运行此循环:
For Each ReportToRun CreatePdf ' using DoCmd.OutputTo acOutputReport, "rptHame", acFormatPDF, strReportName AddToZip Next
知道如何修复此问题或陷阱无法创建输出文件错误? 感谢
答案 0 :(得分:1)
我已经非常成功地使用了开源Info Zip DLL。有关链接和示例VB代码,请参阅Compression DLLs, OCXs, etc。
答案 1 :(得分:0)
两个想法,既不可能解决问题:
您是否尝试过显式提供FALSE作为下一个参数,即AutoStart参数?帮助文件说它默认为FALSE,但也许它在生成后打开PDF,这样它们仍然是打开的?
添加几秒钟的休眠时间(请参阅Make code go to Sleep代码)。
或者,遍历所有报告并生成所有报告,然后启动新循环将每个报告复制到zip文件中,而不是为每个报告生成/复制。在两个循环之间休息几秒钟可能不会造成伤害(假设问题是异步PDF生成过程在启动副本时没有完全完成)。