Sie sind auf Seite 1von 6

Borrar un libro segn la fecha especificada

Una vez un amigo y colega mo me dijo:


-Estoy a punto de salirme de trabajar y como desarrolle algunas macros que no me
pagaron entonces les puse un candado para que dentro de dos meses dejen de
funcionar
La idea no era mala, el se iba, dejaba las macros funcionando y semanas despus de su
partida las macros dejaban de funcionar, el pequeo inconveniente es que los archivos que
contenan las macros se quedaban en las manos de su cliente y existen varias formas para
acceder al cdigo contenido en el libro. Una mejor estrategia hubiese sido que cada vez
que se abriera el libro se verificara la fecha y dependiendo de la validacin se eliminara el
libro con todo y macros.
El siguiente cdigo, muestra cmo eliminar el libro activo si la fecha del sistema es igual o
posterior a una fecha especificada, dicho cdigo va en el evento Open del libro.
NOTA: El libro eliminado no va a la papelera de reciclaje. Se elimina permanentemente.

Private Sub Workbook_Open()


Dim fecha As Date
Dim wb As Workbook
fecha = "20/09/2013" 'fecha de eliminacion del libro
Set wb = ThisWorkbook
If fecha <= Date Then
MsgBox "Se ha cumplido el periodo de prueba del libro!", vbExclamation
With wb
.Saved = True 'se estable como salvado
.ChangeFileAccess xlReadOnly 'se pone el acceso al libro como de solo lectura
Kill .FullName 'se elimina el libro
.Close 'se cierra el libro
End With
End If
End Sub

Un colega, que tambin trabaja con Excel, me pregunt el otro da, si sera posible
eliminar un archivo de Excel de forma automtica, una vez ha pasado una
determinada fecha, para crear una demostracin de una plantilla.
La siguiente macro de Excel hace exactamente eso: Cuando llega una fecha
determinada (en este caso, la que introduzcamos en la celda A1), nos informar de
que el archivo se va a eliminar porque ha caducado el periodo de prueba.
Introduce el siguiente cdigo en un mdulo estndar:
Badabil

1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2
4
2
5

Sub Eliminar_archivo()
Application.DisplayAlerts = False
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close False
End Sub

Sub caducidad()
'deshabilitamos boton cancelar del msgbox
Application.EnableCancelKey = xlDisabled
fecha = Range("A1").Value
If Date < DateSerial(Year(fecha), Month(fecha), Day(fecha)) Then
MsgBox "Dentro de: " & (DateSerial(Year(fecha), Month(fecha), _
Day(fecha)) - Date) & " dias este archivo se AUTOLIMINARA", _
vbInformation, "Tiempo de Expiracin"
Else
MsgBox "Lo siento, el tiempo de prueba a terminado." & Chr(13) _
& "Este archivo se autoeliminar.", vbCritical, "Tiempo de Expiracin"
Call Eliminar_archivo
End If
End Sub

2
6
2
7
2
8

Private Sub Workbook_Open()


"deshabilitamos boton cancelar del msgbox
Application. EnableCancelKey = xlDisabled
"Fecha de Expiracion o de caducidad : 06/02/2009 (mi cumpleaos pz je)
si la fecha actual es menor a 06/02/2009
If Date < DateSerial(2009, 2, 6) Then
MsgBox "Dentro de: " & (DateSerial(2009, 2, 6) - Date) & " dias este archivo SE
AUTOLIMINARA" & Chr(13) & "Sebastiani. Excel@gmail. Com", vbInformation, "Tiempo de
Expiracin"
Else
MsgBox "Lo siento, el tiempo de prueba a terminado" & Chr(13) & "Esta hoja se cerrar" &
Chr(13) & "Sebastiani. Excel@gmail. Com", vbCritical, "Tiempo de Expiracin"
ActiveWorkbook. Close SaveChanges:=FalseCALL AutoDestruccion
End If
"Sebastiani. Excel@gmail. Com
End Sub
Sub AutoDestruccion()
On Error Resume Next
Application. DisplayAlerts = False
With ActiveWorkbook
. ChangeFileAccess xlReadOnly
Kill. FullName
. Close
End With
Application. DisplayAlerts = True
End Sub
ALGO ASI SERIA LO MODIFIQUE ALGO ASI ALTOKE, LA MACRO DE
AUTODESTRUCCION ES la que jale del link que armando que propuso

Private Sub Workbook_Open()


"deshabilitamos boton cancelar del msgbox
Application. EnableCancelKey = xlDisabled
"Fecha de Expiracion o de caducidad : 06/02/2009 (mi cumpleaos pz je)
si la fecha actual es menor a 06/02/2009
If Date < DateSerial(2009, 2, 6) Then
MsgBox "Dentro de: " & (DateSerial(2009, 2, 6) - Date) & " dias este archivo SE
AUTOLIMINARA" & Chr(13) & "Sebastiani. Excel@gmail. Com", vbInformation, "Tiempo de
Expiracin"
Else
MsgBox "Lo siento, el tiempo de prueba a terminado" & Chr(13) & "Esta hoja se cerrar" &
Chr(13) & "Sebastiani. Excel@gmail. Com", vbCritical, "Tiempo de Expiracin"
ActiveWorkbook. Close SaveChanges:=False
CALL AutoDestruccion
End If
End Sub

Sub AutoDestruccion()
On Error Resume Next
Application. DisplayAlerts = False
With ActiveWorkbook
. ChangeFileAccess xlReadOnly
Kill. FullName
. Close
End With
Application. DisplayAlerts = True
End Sub

"Private Sub Workbook_Open()


"deshabilitamos boton cancelar del msgbox
Application. EnableCancelKey = xlDisabled
"Fecha de Expiracion o de caducidad : 06/02/2009 (mi cumpleaos pz je)
si la fecha actual es menor a 06/02/2009
If Date < DateSerial(2009, 2, 6) Then
MsgBox "Dentro de: " & (DateSerial(2009, 2, 6) - Date) & " dias este archivo SE
AUTOLIMINARA" & Chr(13) & "Sebastiani. Excel@gmail. Com", vbInformation, "Tiempo de
Expiracin"
Else
MsgBox "Lo siento, el tiempo de prueba a terminado" & Chr(13) & "Esta hoja se cerrar" &
Chr(13) & "Sebastiani. Excel@gmail. Com", vbCritical, "Tiempo de Expiracin"
ActiveWorkbook. Close SaveChanges:=False
CALL AutoDestruccion
End If
End Sub
Sub AutoDestruccion()
On Error Resume Next
Application. DisplayAlerts = False
With ActiveWorkbook
. ChangeFileAccess xlReadOnly
Kill. FullName
. Close
End With
Application. DisplayAlerts = True
End Sub

Das könnte Ihnen auch gefallen