2017-01-05 4 views
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 неожиданно увеличивается на единицу. В принципе 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 ' –

Смежные вопросы