2016-11-09 1 views
1

一部のファイルを修正しましたが、選択したすべてのファイル(RonDeBruinのコードにクレジット)
enter image description here選択したファイルをZIP形式のフォルダにコピーします。エラーVBAで "ファイルが見つかりません"または読み込み権限がありません

そして、ここに私のコードです:

Sub zipAllFiles() 
'rondebruin <--- Credits to code 

Dim FileNameZip, FolderName 
Dim strDate As String, DefPath As String 
Dim oApp As Object 
Dim Fold As Range 
Dim ws As Worksheet 
Dim i As Integer, lastrow As Long 

DefPath = Application.DefaultFilePath 
If Right(DefPath, 1) <> "\" Then 
    DefPath = DefPath & "\" 
End If 

Set ws = ThisWorkbook.Sheets(2) 
lastrow = ws.Cells(Rows.Count, 5).End(xlUp).Row '---> Files Directories 

strDate = Format(Now, " dd-mmm-yy h-mm-ss") 
FileNameZip = DefPath & "MyFilesZip " & strDate & ".zip" 


'Create empty Zip File 
NewZip (FileNameZip) 

'E3:E&lastrow ---> Where the files directories are located. 
For Each Fold In ws.Range("E3:E" & lastrow) 
    Set oApp = CreateObject("Shell.Application") 
    FolderName = Fold.Value 
    'Copy the files to the compressed folder 
    oApp.Namespace(FileNameZip).CopyHere FolderName 
Next Fold 


ws.Range("J1").Value = Dir(FileNameZip) '---> The directory of the Zipped file to Range(J1). 

Application.DisplayAlerts = False 


End Sub 


しかし、私はそれをデバッグするとき、それはしません私の問題は、私は、コードを実行するたび、それがこのようなエラーがポップアップするということですエラーをポップアップ表示します。コードに何か問題がありますか?または、フォルダやプログラムの設定を変更する必要がありますか?助けてください:(

答えて

0

デバッグ中に動作するが、デバッグしていないときにエラーが発生すると、コードの非同期性に問題がある可能性があります。 VBは次のステートメントを実行しますので、使用しているライブラリ(Ron de Bruin's、ここにはありません)には、プロセスが準備されるのを待つ関数が含まれています。

また、

For Each Fold In ws.Range("E3:E" & lastrow) 
    Set oApp = CreateObject("Shell.Application") 

ループの繰り返しごとに新しいシェルを作成するようですが、ループが十分になる前に一度作成しないでください。

関連する問題