2009-12-21 92 views
3

我使用類似於下面的代碼添加一些文件到一個zip文件夾:VBA 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. 創建壓縮

  2. 運行這個循環:

 For Each ReportToRun 
    CreatePdf ' using DoCmd.OutputTo acOutputReport, "rptHame", acFormatPDF, strReportName 
    AddToZip 
    Next

任何想法如何可以解決這個問題還是陷阱無法創建輸出文件錯誤? 謝謝

+1

此問題的任何更新?我的老闆有同樣的問題,正在尋找解決方案。 – 2011-05-16 21:55:37

回答

0

我已經非常成功地使用了開放的Info Info Zip DLLs。有關鏈接和示例VB代碼,請參閱Compression DLLs, OCXs, etc

+0

謝謝。會給它一個去 – 2009-12-22 21:42:29

0

兩個意念,也不容易解決這個問題:

  1. 您是否嘗試過明確提供虛假作爲一個參數,即自動啓動的說法?幫助文件說它默認爲FALSE,但也許它在生成它們後打開PDF,以便它們仍然打開?

  2. 添加幾秒鐘的睡眠時間(請參閱代碼爲Make code go to Sleep)。

  3. 另外,遍歷所有報表,並生成所有的人,然後開始一個新的循環,每一個副本複製到壓縮文件,而不是生成/每個報告。在兩個循環之間休眠幾秒鐘可能不會造成傷害(假設問題是異步PDF生成過程在複製啓動時尚未完全完成)。

+0

1.絕對不會打開它們。 2.試圖添加一個睡眠....沒有快樂。 3.正在考慮嘗試。將不得不看我如何得到... – 2009-12-22 21:41:28

+1

我有同樣的問題。你有沒有找到解決方案? – synergetic 2010-09-09 08:25:36