[算表] 取得資料夾下子資料夾所有檔案名稱?

看板Office作者 (佩蒂吉他)時間7年前 (2018/09/19 15:47), 7年前編輯推噓0(007)
留言7則, 1人參與, 7年前最新討論串1/1
軟體:excel 版本:2007 因為要取得某個資料夾下所有子資料夾所有檔案的名稱(只要檔案名稱不要資料夾) vba如下: filepath是已經指定好的路徑上面已經定義好 buf = Dir(filepath & "*.*") If buf = "" Then MsgBox "找不到檔案" Exit Sub End If Do While buf <> "" cnt = cnt + 1 Sheets("設定").Range("A" & cnt) = buf buf = Dir() Loop 不知道這邊要怎麼修改 感謝大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.67.78 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1537343232.A.F01.html

09/19 16:16, 7年前 , 1F
以filesystemobject,巢狀迴圈於subfolders和files集合
09/19 16:16, 1F
我後來找網路上一些範例自己嘗試寫 不過有問題不知道怎麼改 1.debug.print那邊不知道要怎麼改成可以輸出到工作表 我要在工作表設定 從A1開始列出所有檔案清單 2.這樣似乎只能傳回test下面所有子資料夾的檔案名稱 可是test本身目錄下的檔案名稱不會回傳 程式碼: Sub try() Dim MyPath As String, MyFile As String, File As Workbook Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder("D:\test\") For Each sf In f.SubFolders For Each ofile In sf.Files Debug.Print ofile.Name Next Next End Sub ※ 編輯: ptguitar (110.26.4.193), 09/19/2018 22:12:59 ※ 編輯: ptguitar (110.26.4.193), 09/19/2018 22:15:24

09/19 22:46, 7年前 , 2F
問題1,如原文cnt累加,range("a" & cnt)來列出所有檔案清
09/19 22:46, 2F

09/19 22:47, 7年前 , 3F
09/19 22:47, 3F

09/19 22:48, 7年前 , 4F
問題2. f.subfolders下方以set 變數=fso.getfolder("d:\te
09/19 22:48, 4F

09/19 22:49, 7年前 , 5F
s\" & sf.name,再將sf.files改為上述變數.files
09/19 22:49, 5F

09/19 22:59, 7年前 , 6F
問題2.更正一下是於for each sf...上方加上for each 變數
09/19 22:59, 6F

09/19 23:00, 7年前 , 7F
in f.files...next,迴圈內再以變數.files輸出
09/19 23:00, 7F
文章代碼(AID): #1ReVy0y1 (Office)
文章代碼(AID): #1ReVy0y1 (Office)