|
本帖最后由 naolew 于 2018-8-31 11:42 编辑
用双字典配合DIR可以实现,且速度很快,网上有高手的现成代码,本人已收藏,经常引用,现搬运如下,请测试:
- Sub Test() '使用双字典,旨在提高速度
- Dim MyName, Dic, Did, I, T, F, TT, MyFileName
- T = Time
- Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象
- Set Did = CreateObject("Scripting.Dictionary")
- Dic.Add ("D:"), ""
- I = 0
- Do While I < Dic.Count
- Ke = Dic.keys '开始遍历字典
- MyName = Dir(Ke(I), vbDirectory) '查找目录
- Do While MyName <> ""
- If MyName <> "." And MyName <> ".." Then
- If (GetAttr(Ke(I) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录
- Dic.Add (Ke(I) & MyName & ""), "" '就往字典中添加这个次级目录名作为一个条目
- End If
- End If
- MyName = Dir '继续遍历寻找
- Loop
- I = I + 1
- Loop
- Did.Add ("文件清单"), "" '以查找D盘下所有EXCEL文件为例
- For Each Ke In Dic.keys
- MyFileName = Dir(Ke & "*.xls")
- Do While MyFileName <> ""
- Did.Add (Ke & MyFileName), ""
- MyFileName = Dir
- Loop
- Next
- For Each Sh In ThisWorkbook.Worksheets
- If Sh.Name = "XLS文件清单" Then
- Sheets("XLS文件清单").Cells.Delete
- F = True
- Exit For
- Else
- F = False
- End If
- Next
- If Not F Then
- Sheets.Add.Name = "XLS文件清单"
- End If
- Sheets("XLS文件清单").[A1].Resize(Did.Count, 1) = WorksheetFunction.Transpose(Did.keys)
- TT = Time - T
- MsgBox Minute(TT) & "分" & Second(TT) & "秒"
- End Sub
复制代码
|
评分
-
1
查看全部评分
-
|