返回列表 上一主題 發帖

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

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

本帖最後由 ui123 於 2014-3-6 23:00 編輯

各位大大,遇到一個難題是這樣的:
平時檔案都會放在一個資料夾的第一層,但定時會有人去將這些檔案按年月去歸位
如果在第一層找不到檔案,就要往下一層去找個個資料夾看檔案在哪裡...只會存在在其中一個資料夾,但不知道在哪一個
範例:比方我要找名為file的檔案,找到後然後打開此檔案(沒找到顯示"沒找到此檔案"),如附件。
目前只會使用單層dir

New folder.rar (6.28 KB)

看到一個標題是這樣的:
"Excel VBA to list files in folder and subfolder with path to .txt file"
如下網址:
http://stackoverflow.com/questions/20219362/excel-vba-to-list-files-in-folder-and-subfolder-with-path-to-txt-file

我試過他會列出所有資料夾的名稱,但有個小小疑問,要怎麼利用dir去尋找這清單然後打開要的檔案?有大大可以教我一下嗎? 由衷感謝^^

    Sub go()
        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
            ShowFolderList f1
        Next
        Set fc = f.Files
        For Each f1 In fc
            Debug.Print folderspec & f1.Name
        Next
    End Sub

TOP

回復 3# Hsieh

親愛的版主您好~
我有連進去囉->Excel程式區 1877.0 html 是什麼? 不懂,感恩^^

TOP

回復 5# Hsieh

版大我有看完你PO的文,Sub list_and_link1 可以列出所有檔案名
----------------------------------------------------------------------------------------------------------
另外也找了一種方法,它可以幫我找出所有檔案名稱,但有個小小問題,
如果Sheet1的Range("A1") 是搜尋的檔名,例如:file(如主題中的附件),如何在搜尋到後打開他???感謝您^^

Public Sub TestListDir()
    Worksheets(1).Cells(2, 1).Activate
    Call listDir("C:\Users\ui\Desktop\New folder\", 1)
End Sub

Public Sub listDir(strPath As String, lngSheet As Long)
Dim strFn As String
Dim strDirList() As String
Dim lngArrayMax, x As Long
lngArrayMax = 0
strFn = Dir(strPath & "*.*", 23)
While strFn <> ""
    If strFn <> "." And strFn <> ".." Then
        If (GetAttr(strPath & strFn) And vbDirectory) = vbDirectory Then
            lngArrayMax = lngArrayMax + 1
            ReDim Preserve strDirList(lngArrayMax)
            strDirList(lngArrayMax) = strPath & strFn & "\"
        Else
            ActiveCell.Value = strPath & strFn
            Worksheets(lngSheet).Cells(ActiveCell.Row + 1, 1).Activate
        End If
    End If
    strFn = Dir()
Wend
If lngArrayMax <> 0 Then
    For x = 1 To lngArrayMax
        Call listDir(strDirList(x), lngSheet)
    Next
End If
End Sub

TOP

各位大大,給您們回報目前狀況

暫時方案:
目前無法解決"Dir在各subfolder找到檔案就開起來(檔案只存在一個資料夾)"
所以現在暫時應應措施為:  先列出所有的檔案名,然後搜出要的檔案名+完整位置,然後打開它~
---------------------------------------------------------------------------------------------
永久對策:
如有人會"Dir各subfolder"然後打開找到的檔案的話,請不令指教,感謝~^^
PS:要找的檔案名會放在A1儲存格

TOP

回復 8# Hsieh
大大最近使用這個程式碼時,發現常常搜個2~3層就不搜了(沒在搜下去,原始資料夾共有24個 2014/1..../12 &2015/1..../12),
很怪><,不過有的時候時成功的

TOP

回復 8# Hsieh
今天試,各層都蒐的到了
我在研究一下....還沒發現其他問題,有問題再問您,謝謝~

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題