|
Sub Macro1()
Dim Fso As Object, SubFolder As Object, p$, p2$, s$, smeg$, arr, brr(), i&, m&, d As Object
Set d = CreateObject("scripting.dictionary")
p = [a2] '源文件夹,需要手工填写
p2 = [b2] '目标文件夹,需要手工填写
If Dir(p2, vbDirectory) = "" Then MkDir p2
Set Fso = CreateObject("scripting.filesystemobject")
arr = Range("A1:A" & Range("A65536").End(xlUp).Row)
For Each SubFolder In Fso.GetFolder(p2).SubFolders
d(SubFolder.Name) = ""
Next
ReDim brr(1 To Fso.GetFolder(p).SubFolders.Count, 1 To 1)
For Each SubFolder In Fso.GetFolder(p).SubFolders
For i = 4 To UBound(arr)
If InStr(SubFolder.Name, arr(i, 1)) Then
If Not d.Exists(SubFolder.Name) Then
SubFolder.Move p2
d(SubFolder.Name) = ""
m = m + 1
brr(m, 1) = SubFolder.Name
Else
s = s & vbCrLf & SubFolder.Name
End If
End If
Next
Next
Range("C4:C65536").ClearContents
If m > 0 Then
Range("C4").Resize(m) = brr '移动的文件夹名写到C列
smeg = "共移动文件夹:" & vbCrLf & m & "个。"
End If
If Len(s) Then smeg = smeg & vbCrLf & "文件夹中有重名:" & s
If Len(smeg) Then
MsgBox smeg, vbInformation
Else
MsgBox "没有发现符合条件的文件夹。", vbInformation
End If
Set Fso = Nothing
End Sub
|
|