然后插入了一个模块1,在代码框中复制如下代码:
Option Base 1
Private Function WJM(m)
'2020-10-20 22:32:12
Dim m1 As String, r1 As Long, r2 As Long
r1 = 1
m1 = CStr(m)
Do
r2 = InStr(r1, m1, "\")
If r2 <> 0 Then r1 = r2 + 1 Else r1 = r1
Loop Until r2 = 0
WJM = Right(m1, Len(m1) - r1 + 1)
End Function
Sub 列取所有文件名()
'2020-10-20 22:52:57
Dim mym, d1 As Object, d2 As Object, i, myfn, m As String, m1, mb(), mb1(), k
On Error Resume Next
Set d1 = CreateObject("scripting.dictionary")
Set d2 = CreateObject("scripting.dictionary")
m = Range("b1").Text
d1.Add (m & "\"), ""
i = 0
Do While i < d1.Count
m1 = d1.keys
mym = Dir(m1(i), vbDirectory)
Do While mym <> ""
If mym <> "." And mym <> ".." Then
If (GetAttr(m1(i) & mym) And vbDirectory) = vbDirectory Then
d1.Add (m1(i) & mym & "\"), ""
End If
End If
mym = Dir
Loop
i = i + 1
Loop
For Each m1 In d1.keys
myfn = Dir(m1)
Do While myfn <> ""
d2.Add (m1 & myfn), ""
myfn = Dir
Loop
Next m1
k = 0
mb = d2.keys
ReDim mb1(d2.Count, 3)
For i = 0 To d2.Count - 1
k = k + 1
mb1(k, 1) = k
mb1(k, 2) = WJM(mb(i))
mb1(k, 3) = mb(i)
Next i
If Range("A" & Rows.Count).End(xlUp).Row > 4 Then
Range("A5:C" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents
End If
If k <> 0 Then Range("a5:C" & k + 4) = mb1
MsgBox "完成"
End Sub