返回列表 上一主題 發帖

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

回復 8# Hsieh

大大您好,我想透過您的程式碼,自動找到[個人巨集活頁簿]的位置

但遇到2個問題
1.(權限問題),因個人巨集活頁簿應該不會放到權限的資料夾裡面,因此我寫一個ON ERROR RESUME NEXT 跳過
2.找不到[XLSTART]資料夾...WHY?
  1. Sub list_and_link1()
  2.     Dim ary() As String, rw As Long
  3.     rw = 1: i = 0
  4.     path1 = "C:\" '第一層資料夾
  5.     file1 = Dir(path1 & "*.*", vbDirectory) '只處理資料夾
  6.     Do While file1 <> ""
  7.       If file1 <> "." And file1 <> ".." And _
  8.          GetAttr(path1 & file1) = vbDirectory Then
  9.          i = i + 1
  10.          ReDim Preserve ary(i)
  11.          ary(i) = file1
  12.       End If
  13.       file1 = Dir
  14.     Loop
  15.     For i = 1 To UBound(ary)
  16.        GetSubs path1 & ary(i) & "\", rw, 1
  17.     Next i
  18. End Sub

  19. Sub GetSubs(sPath As String, rw As Long, ilevel As Long)
  20.     Dim ary1() As String
  21.     ReDim ary1(1)
  22.     On Error Resume Next
  23.     sname = ""
  24.     sname = Dir(sPath, vbDirectory)
  25.     On Error GoTo 0
  26.     Do While sname <> ""
  27.       If sname <> "." And sname <> ".." And _
  28.          GetAttr(sPath & sname) = vbDirectory Then
  29.          ary1(UBound(ary1)) = sname
  30.          ReDim Preserve ary1(UBound(ary1) + 1)
  31.       End If
  32.       sname = Dir
  33.     Loop
  34.     For i = 1 To UBound(ary1) - 1
  35.        rw = rw + 1
  36.        GetSubs sPath & ary1(i) & "\", rw, ilevel + 1
  37.       If ary1(i) = "XLSTART" Then
  38.             Sheets("LOG").[E1] = sPath & ary1(i)
  39.             End
  40.       End If
  41.     Next i
  42. End Sub
複製代碼
PKKO

TOP

回復 10# GBKEE


    超版大大,實在太神了

多學了一個InStr的用法,真好用耶

至於Set Fs = CreateObject("Scripting.FileSystemObject").GetDRIVE("C:")
    Set Fs = Fs.ROOTFOLDER.SubFolders '根目錄\資料夾物件集合
也是小弟第一次看到
好方便!

感激至極!!
PKKO

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題