返回列表 上一主題 發帖

[發問] 多層資料夾尋找檔案的問題

本帖最後由 no3-taco 於 2015-6-16 04:36 編輯

玩玩看,簡化過的遞迴版
  1. Sub 這裡執行()
  2. Dim rw As Long, ilevel As Long: rw = 1: ilevel = 0
  3. GetSubs "C:\Users\Administrator\Desktop" & "\", rw, ilevel '呼叫副程式"#修改路徑#
  4. End Sub
  5. Sub GetSubs(sPath As String, rw As Long, ilevel As Long)
  6. Dim ary1() As String: ReDim ary1(0): Dim sName
  7. sName = Dir(sPath, vbDirectory)
  8. Do While sName <> ""
  9.     On Error Resume Next  '有錯誤跳過
  10.     If sName <> "." And sName <> ".." And (GetAttr(sPath & sName) And vbDirectory) = vbDirectory Then
  11.     'If Err = 0 Then  '沒有錯誤時
  12.         ReDim Preserve ary1(UBound(ary1) + 1)
  13.         ary1(UBound(ary1)) = sName
  14.     End If ': End If
  15.     sName = Dir
  16. Loop
  17. For i = 1 To UBound(ary1)
  18.     rw = rw + 1
  19.     GetSubs sPath & ary1(i) & "\", rw, ilevel + 1    '遞迴呼叫
  20. Next i
  21. sName = Dir(sPath)
  22. If Dir(sPath & [A1]) = [A1] Then
  23.    Workbooks.Open sPath & [A1]    '開啟檔案
  24. End
  25. End If
  26. End Sub
複製代碼

TOP

參考看看!簡單的FSO搜尋
  1. Sub 呼叫處() '呼叫處
  2. Dim FirstPath: FirstPath = "C:\Users\Administrator\Desktop\" '路徑....自行修改
  3.     SearchFile FirstPath
  4. End Sub

  5. Sub SearchFile(ByVal xPath As String)
  6. Dim objPath As Object, xFile As Object, xFolder As Object
  7. Set objPath = CreateObject("Scripting.FileSystemObject").getfolder(xPath)
  8. For Each xFile In objPath.Files         '該層檔案名稱集合
  9.     If xFile.Name = [a1] Then           '開啟的檔案名稱....自行修改
  10.         Workbooks.Open xFile.Path       '開啟檔案
  11.         End
  12.     End If
  13. Next
  14. For Each xFolder In objPath.SubFolders '某層子資料夾集合
  15.     SearchFile xFolder.Path
  16. Next
  17. End Sub
複製代碼

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題