【发布时间】:2017-05-20 04:09:36
【问题描述】:
我正在遍历一个目录中的文件,一切正常,但是当我将文件传递给模块中的另一个函数时,它变得很奇怪。它会跳过循环中检索到的第一个文件!
假设第一个循环运行,例如file 是"File1",但是一旦它到达copyFile (file),它就会将"File2" 传递给同样存在的函数,由于某种原因,它会在调用copyFile 时自动递增循环函数。
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),但同样的情况发生了。
【问题讨论】:
-
你是把文件复制到同一个目录吗?
-
copyFile 只是一个模块,我也在其中做其他事情。关键是 copyFile 模块的参数突然加一。原则上,copyFile 可以是任何其他模块,甚至不执行复制操作。
-
你能试试这里的代码吗:stackoverflow.com/questions/10380312/…
-
实际上问题在于
file=Dir您将文件更改为新文件。这就是为什么它正在发生。将file=Dir放在Loop之前。它应该可以工作。 -
“这里的文件也是正确的”——当然你的意思是在分配之前。您在调用
copyFile之前重新分配了file,因此您打印的值不会是您复制的值。在copyFile file调用之后 移动file = Dir。学习使用断点 (F9)、单步执行 (F8) 和 locals 调试器工具窗口可能会让您受益。