列出文件夹和子文件夹中的文件以及.txt文件的路径

时间:2013-11-26 14:09:47

标签: excel vba excel-vba

我有一个excel表,其中包含一个包含目录路径的单元格,我想要一个宏来搜索目录和任何子目录,并列出.txt文件中的文件,以及每个文件的完整路径。

目前我发现它看起来应该找到文件,除了路径是硬编码的,它对结果没有任何作用。

我有什么想法可以改变它以满足我的需求吗?

Sub LoopThroughFiles()
Dim StrFile As String
StrFile = Dir("C:\Work\NCL\nCLs\histogram_addition\TestData\Input\RTE\")
Do While Len(StrFile) > 0
    Debug.Print StrFile
    StrFile = Dir
Loop
End Sub

1 个答案:

答案 0 :(得分:8)

这是一个使用递归调用从FileSystemObject()示例拼凑而成的方法。如果需要,对结果应用排序。您还可以使用其他FileSystemObject()方法按.txt扩展名进行过滤:

    Sub Sample()
        ShowFolderList ("C:\temp")
    End Sub

    Sub ShowFolderList(folderspec)
        Dim fs, f, f1, fc, s, sFldr
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(folderspec)
        Set fc = f.SubFolders
         For Each f1 In fc
            If Right(f1, 1) <> "\" Then ShowFolderList f1 & "\" Else ShowFolderList f1
        Next
        Set fc = f.Files
        For Each f1 In fc
            Debug.Print folderspec & f1.Name
        Next
    End Sub

写入文件:

    Option Explicit

    Dim file As Object
    Dim fs As Object

    Sub go()
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set file = fs.OpenTextFile("C:\temp2\results3.txt", 2, True) ' 2=ForWriting, replace
        ShowFolderList "C:\temp\"
        file.Close
        MsgBox "done"
    End Sub

    Sub ShowFolderList(folderspec)
    On Error GoTo local_err
        Dim f, f1, fc, s, sFldr
        Set f = fs.GetFolder(folderspec)
        Set fc = f.SubFolders
         For Each f1 In fc
            If Right(f1, 1) <> "\" Then ShowFolderList f1 & "\" Else ShowFolderList f1
        Next
        Set fc = f.Files
        For Each f1 In fc
            file.writeline folderspec & f1.Name
        Next
     local_exit:
        Exit Sub
     local_err:
        MsgBox Err & " " & Err.Description
        Resume local_exit
        Resume
    End Sub