Dan,
Try the macro below on a COPY of your folder - just to make sure that it works the way you expect.
Put the macro into a standard codemodule of an otherwise blank workbook, and save that file the
folder with the files to delete - in this case, the copy of MyFolder. Then run the macro "FindKill".
HTH,
Bernie
MS Excel MVP
Sub FindKill()
Dim i As Integer
Dim j As Integer
Dim sName As String
Dim myFind As Integer
Dim myIndex As Integer
Dim sName2 As String
Dim myFind2 As Integer
Dim myIndex2 As Integer
Dim Killed() As Boolean
With Application.FileSearch
.NewSearch
.LookIn = ThisWorkbook.Path
.SearchSubFolders = False
.FileType = msoFileTypeExcelWorkbooks
If .Execute() > 0 Then
MsgBox "There were " & .FoundFiles.Count & " file(s) found."
ReDim Killed(1 To .FoundFiles.Count)
For i = 1 To .FoundFiles.Count
Killed(i) = False
Next i
For i = 1 To .FoundFiles.Count - 1
myFind = InStr(1, .FoundFiles(i), "(")
If myFind = 0 Then
sName = Left(.FoundFiles(i), Len(.FoundFiles(i)) - 4)
myIndex = 0
Else
sName = Left(.FoundFiles(i), myFind - 1)
myIndex = Mid(.FoundFiles(i), myFind + 1, _
InStr(myFind, .FoundFiles(i), ")") - myFind - 1)
End If
For j = i + 1 To .FoundFiles.Count
myFind2 = InStr(1, .FoundFiles(j), "(")
If myFind2 = 0 Then
sName2 = Left(.FoundFiles(j), Len(.FoundFiles(j)) - 4)
myIndex2 = 0
Else
sName2 = Left(.FoundFiles(j), myFind2 - 1)
myIndex2 = Mid(.FoundFiles(j), myFind2 + 1, _
InStr(myFind2, .FoundFiles(j), ")") - myFind2 - 1)
End If
If sName = sName2 Then
If myIndex < myIndex2 Then
If Not Killed(i) Then
'Kill .FoundFiles(i)
Killed(i) = True
End If
Else
If Not Killed(j) Then
'Kill .FoundFiles(j)
Killed(j) = True
End If
End If
End If
Next j
Next i
Else
MsgBox "There were no files found."
End If
For i = 1 To .FoundFiles.Count
If Killed(i) Then Kill .FoundFiles(i)
Next i
End With
End Sub