No entiendo muy bien la lógica de tu pedido, primero me parece más lógico hacer el backup al guardar el archivo en lugar de abrirlo.
En fin a continuación un código que me lista los archivos de excel de una carpeta, luego los ordena (en tu caso como la fecha está incluida en el nombre del archivo poemos decir que lo ordena por fecha). Posteriormente me borra los backups mas antiguos (si hay mas de 3 - cuidado con el comando kill aqui) y la ultima parte sería con el código que tienes crear un archivo nuevo.
Public Fpath() As String 'Aqui se almacenan los archivos encontrados
Dim RutaActual As String 'Ruta donde se buscarán los archivos
Public Sub UpdateBackup()
'1.- Obtenemos los archivos de excel de un directorio específico
Call ListarFiles
'2- Ordenamos los archivos para quedarnos con los 3 más actuales
Call SortFiles
' realizamos copia del archivo actual
Call RealizarCopia
End Sub
Public Sub ListarFiles()
'Variables definition
Dim sName As String ' nombre del archivo encontrado
Dim sFullName As String 'Ruta + nombre del archivo
Dim isfile As Integer
RutaActual = ThisWorkbook.Path & "\"
sName = Dir(RutaActual & "*.xls", vbNormal)
isfile = 0
While Len(sName) > 0
sFullName = RutaActual & sName
If sName <> "." And sName <> ".." Then
If (GetAttr(sFullName) And vbArchive) = vbArchive Then
ReDim Preserve Fpath(isfile)
Fpath(isfile) = spath & sName
isfile = isfile + 1
End If ' it represents a directory.
End If
sName = Dir ' Get next entry.
Wend
nReps = isfile - 1
If isfile < 1 Then
MsgBox ("No se encontró ningún archivo" & Chr(13) & "en el directorio especificado." _
& Chr(13) & "Posiblemente no haya ningún archivo del tipo especificado.")
End If
Exit Sub
Fin1:
MsgBox Err.Description, vbExclamation
End
End Sub
Public Sub SortFiles()
'Una manera fácil de ordenar es copiar los nombres d elos archivos en Excel
Dim hoja As Worksheet
Dim max As Integer
max = UBound(Fpath) 'obtenemos el numero de archivos almacenados
Set hoja = ActiveWorkbook.Sheets.Add
For i = 0 To max
hoja.Cells(i + 1, 1).Value = Fpath(i)
Next
With hoja.Sort
.SortFields.Add Key:=Range("A1"), Order:=xlDescending, DataOption:=xlSortTextAsNumbers
.SetRange Range("A1", Selection.End(xlDown))
.Apply
End With
Application.DisplayAlerts = False
'solo tomamos los 3 últimos archivos
If max > 3 Then
For i = 4 To max
'borramos los archivos mas antiguos
Kill RutaActual & Cells(i, 1).Value
Next
End If
hoja.Delete
Application.DisplayAlerts = True
End Sub