使用目录循环文件夹中的文件

时间:2017-03-02 16:06:32

标签: vba excel-vba excel

我正在尝试使用Dir循环访问文件。我写了以下内容,但正如预期的那样,循环是无止境的,因为它打开并关闭文件夹中的第一个文件。

我想知道是否有比wildcard方法更好的方法,但任何人都可以为我提供解决方案。

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

1 个答案:

答案 0 :(得分:0)

试用此代码

files = Dir("/yourpath/*.xlsx")
While files <> ""
    List(i)=files //List(i) will hold the file name 
    files = Dir
Wend

这里Dir函数每次调用时都会逐个返回文件名 清除所有文件名后,返回空字符串。

为了更好地理解,假设Dir函数中有静态变量来保存文件名索引。