Dim result As Integer
Private Sub CommandButton2_Click()
Dim first As String
Dim second As String
first = range("I13")
second = range("K13")
result = 0
Call getAllDir("g:\test\", first, second)
range("I14") = "修改完成,共修改" & result & "件"
End Sub
Private Sub getAllDir(dirs As String, oldExt As String, newExt As String)
Dim Tochange As String
Dim sf As String
Dim allSun() As String
Dim i As Integer
i = 1
Tochange = Dir(dirs)
Call changeName(dirs, oldExt, newExt)
sf = Dir(dirs, vbDirectory)
Do While sf <> ""
If sf <> "." And sf <> ".." Then
If (GetAttr(dirs & sf) And vbDirectory) = vbDirectory Then
ReDim Preserve allSun(1 To i) As String
allSun(i) = dirs & sf & "\"
i = i + 1
End If
End If
sf = Dir
Loop
If (CStr(Join(allSun, ""))) = "" Then
GoTo NoCall
End If
finish = UBound(allSun)
For j = 1 To finish
Call getAllDir(allSun(j), oldExt, newExt)
Next
NoCall:
End Sub
Private Sub changeName(dirs As String, oldExt As String, newExt As String)
Dim Tochange As String
Dim TheLen As Integer
Dim Newi As String
Dim Oldi As String
Tochange = Dir(dirs)
Do While Tochange <> ""
TheLen = Len(Tochange)
Oldi = dirs & Tochange
If Right(Tochange, Len(oldExt)) <> oldExt Then
GoTo NextLoop
End If
Tochange = Left(Tochange, TheLen - Len(oldExt))
Newi = dirs & Tochange & newExt
Name Oldi As Newi
result = result + 1
NextLoop:
Tochange = Dir
Loop
End Sub