VBA ,第一次获得文件夹下的文件名:dir(path) 后面继续获得文件夹下其他文件名,不能用dir(path),而要用dir() 如果继续用 dir(path) 会让指针又指到文件夹内的第一个文件
时间: 2024-11-29 18:39:19 浏览: 7
VBA (Visual Basic for Applications) 中,当你想要通过`Dir()`函数获取一个目录下的所有文件名,尤其是在需要遍历目录并逐个获取后续文件名时,不能直接再次调用`Dir(path)`,因为这会将`Dir`变量的位置恢复到目录的第一个文件上。
正确的做法是使用循环,通常结合`Do While`循环结构,这样可以逐个获取直到目录结束。下面是一个基本的示例:
```vba
Sub ListFilesInFolder()
Dim path As String
Dim fileName As String
Dim folderPath As String ' 例如 "C:\MyFolder\"
' 设置路径
folderPath = "C:\MyFolder\"
' 初始化 Dir 变量
fileName = Dir(folderPath & "*.txt") ' 或者指定其他扩展名
' 循环获取文件名,直到没有更多文件
Do While fileName <> ""
Debug.Print fileName ' 打印文件名,你可以修改这部分以适应你的需求
fileName = Dir() ' 获取下一个文件名,这里不会重置指针
Loop
' 当文件处理完毕,确保清空 Dir 变量以释放资源
fileName = ""
End Sub
```
在这个例子中,`Do While`循环会在`fileName`变为`""`(表示当前目录下无更多文件)时终止。每次迭代都会递增地获取一个新的文件名,而不是回到文件夹的第一个文件。
阅读全文