2017-01-05 4 views
1

1つのディレクトリ内のファイルをループしていますが、すべて正常に動作しますが、ファイルをモジュール内の別の関数に渡すと奇妙になります。ループ内で最初に読み込まれたファイルをスキップします。 たとえば、fileの最初のループ実行が"File1"であるとしたら、copyFile (file)に達すると、"File2"が関数に渡されます。何らかの理由で、copyFile関数を呼び出すと自動的にループがインクリメントされます。ディレクトリVBA内のループスルーファイル

Dim file As Variant 
file = Dir("PATH TO MY DIRECTORY") 
Do While Len(file) > 0 
    Debug.Print file 'Here the right name is printed 
    file = Dir 'file here is also correct, at the beginning of the loop it shows File1 
    copyFile (file) 'Here suddenly the next file is sent to the copyFile 

Loop 

私はそこでfileを格納し、文字列を定義しようとしたし、その後copyFile(stringFile)に渡すが、同じことが起きています。

+0

ファイルを同じディレクトリにコピーしていますか? – Barney

+0

copyFileは単なるモジュールであり、私はそこに他のものも用意しています。ポイントは、copyFileモジュールの引数が突然1つ増えます。原則として、copyFileは他のモジュールでもよく、コピーアクションを実行することさえできません。 –

+0

ここからコードを試してみることができます:http://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba – Vityata

答えて

2

あなたはこのようにしてみてくださいことができます:

Dim file As Variant 
file = Dir("PATH TO MY DIRECTORY") 
Do While Len(file) > 0 
    Debug.Print file 'Here the right name is printed 
    copyFile (file) 'Here suddenly the next file is sent to the copyFile 
    file = Dir 
Loop 

私はそれが動作するはずだと思います。ここでもコードを見てください: Loop through files in a folder using VBA?

+1

実際、コメントにも述べたように、問題はモジュールを呼び出す前に 'Dir'を' file'に割り当てることでした –

関連する問題