【发布时间】:2017-07-22 11:12:54
【问题描述】:
我正在尝试使用Dir 遍历文件。我写了以下内容,但正如预期的那样,循环是无限的,因为它打开和关闭文件夹中的第一个文件。
我想知道是否有比通配符方法更好的方法,但是任何人都可以为我提供解决方案。
strFolder = "D:\Name\Project\Data\Back-End\Previous\"
strFileSpec = strFolder & "*.xlsx"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
Dim strFilePath As String: strFilePath = strFolder & strFileName
Set proxy_wbk = Workbooks.Open(strFilePath)
Set proxySheet = proxy_wbk.Sheets(1)
siteName = proxySheet.Cells(1, 1).Value
'do work'
Workbooks(siteName & "_Jan_2017.xlsx").Close savechanges:=False
Loop
【问题讨论】:
-
使用目录显示更多代码。
-
@GordonBell 我已经更新了帖子。
-
在
Loop前加strFileName = Dir(不带参数)得到下一个文件名 -
谢谢。这行得通。你能解释一下为什么设置
strFileName = Dir会推动它前进吗?我不认为我完全遵循它。无论如何,我感谢您的帮助。 -
Dir 调用了一个底层的 Windows 函数,同时运行的其他应用也可能调用该函数;可以重置目录和文件规范,因此您对 Dir 的后续调用可能会返回意外结果。如果这是一个问题,那么使用符合您规范的文件加载数组或集合会更安全,然后通过从数组中提取文件名而不是重复调用 Dir 来处理它们。您还可以通过检查每个数组条目来添加另一层防呆措施,以确保在对其进行操作之前,该路径与您期望的路径匹配。