2013-11-26 59 views
2

我有一個Excel單張,其中包含一個目錄路徑的單元格,我想要一個宏來搜索目錄和任何子目錄,並列出文件.txt文件,每個文件的完整路徑。列出文件夾和子文件夾中的文件與.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 
+3

http://stackoverflow.com/questions/9827715/get-list-of- subirrs-in-vba –

+1

將Dir(「C:\ Work \ NCL \ nCLs \ histogram_addition \ TestData \ Input \ RTE \」)改爲'Dir(Range(「A1」)。Value)'(修改爲正確的這個代碼將結果打印在VBE的Immediate窗格中,你可以修改它來創建一個文本文件並將每個路徑打印到文件中的一個新行 –

+0

我是VBA新手,剛剛檢查了直接窗格並且它的空洞,任何想法爲什麼? – manish449

回答

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 
+0

感謝您的工作。我如何獲得打印到文本文件 – manish449

+0

值得學習如何使用FileSystemObject()。您可以添加對Windows腳本運行時的引用以啓用智能感知。 – rheitzman

+0

謝謝關於vba,我還有很多東西需要學習,不幸的是我沒有多少時間來進行調查。手指越過這將很快改變。感謝您的幫助 – manish449

相關問題