CitarSupongo que para saber si un mes tiene 30 o 31 días habrá que usar arrays... y eso se escapa de mis humildes conocimientos xD
Algún alma caritativa podría arrojar algo de luz sobre este perdido programador? xD
Quizas esto te sirva!!
Código (vb) [Seleccionar]
Option Explicit
Private Sub Form_Load()
MsgBox "Expira el día " & Expira
End Sub
Public Function Expira() As Byte
Select Case Month(Date)
Case 1, 3, 5, 7, 8, 10, 12:
If Day(Date) = 31 Then
Expira = 1
Else
Expira = Day(Date) + 1
End If
Case 2
If Bisiesto(Year(Date)) = True Then
If Day(Date) = 29 Then
Expira = 1
Else
Expira = Day(Date) + 1
End If
Else
If Day(Date) = 28 Then
Expira = 1
Else
Expira = Day(Date) + 1
End If
End If
Case Else
If Day(Date) = 30 Then
Expira = 1
Else
Expira = Day(Date) + 1
End If
End Select
End Function
Public Function Bisiesto(Año As Integer) As Boolean
On Error GoTo nError
'Los años divisibles por 4 son bisiestos, pero cada 400 años se deben eliminar 3 _
bisiestos. Para ello, no son bisiestos los que se dividen por 100, menos los que se _
dividen por 400, que sí son bisitestos.
If Año Mod 4 = 0 Then
If (Año Mod 100 = 0) And Not (Año Mod 400 = 0) Then
Bisiesto = False
Else
Bisiesto = True
End If
Else
Bisiesto = False
End If
'Salimos de la función
Exit Function
nError:
Bisiesto = False
End Function


otra cosa, si deseas seguir creando archivos con el mismo patrón y en el mismo día, faltaría agregarle la hora de creación al final del nombre del fichero para separarlos por tiempo de creación ¡idea! (pero eso no preguntes como se hace, es muy básico).