Con Microsoft Excel se pueden hacer muchas cosas; virguerías, diría yo. Es sin duda una de las mejores aplicaciones que ha desarrollado Microsoft y sus posibilidades son brutales. Prueba de ello es el ejercicio que haremos hoy.
Vamos a crear un fichero de Excel, que podría contener los datos que queráis, con una macro que irá comprobando la fecha para calcular una caducidad. Al llegar la fecha límite, el fichero mostrará un aviso y se cerrará. Y si queréis ir más allá, podemos programar el mismo fichero para que, al llegar la fecha de fin, se elimine del disco duro sin dejar rastro ni en la papelera. ¿Cómo es posible? Ahora lo veremos.
Lo primero es crear un documento nuevo con Excel y guardarlo con el nombre que queramos, eligiendo como tipo Libro de Excel habilitado para macros (.xlsm).
Con el fichero abierto, pulsando a la vez Alt y F11 abriremos el editor de Microsoft Visual Basic para Aplicaciones. Aquí programaremos la macro que hará todo esto.
En la parte izquierda seleccionamos ThisWorkbook y escribimos este código:
Private Sub Workbook_Open()
Dim exdate As Date
exdate = "12/05/2014"
If Date > exdate Then
MsgBox ("Este fichero ha caducado")
ActiveWorkbook.Close SaveChanges:=False
End If
MsgBox ("Quedan " & exdate - Date & " días")
End Sub
Como veis, los comandos son muy sencillos y fáciles de interpretar. La primera línea hace que la macro se ejecute al abrir el libro. Después definimos la variable exdate, donde ponemos la fecha de caducidad, y le decimos que si la fecha actual es posterior a exdate muestre un mensaje de fichero caducado y cierre el libro sin guardar los cambios. Si no, abre otra ventana con los días que quedan entre la fecha actual y la de caducidad.
Ya podemos guardar, cerrar el Excel y volver a abrirlo para comprobar que funciona.
Nota: la persona que abra el fichero tendrá que habilitar las macros. Para asegurarnos de que lo hace, podemos hacerlo obligatorio para ver el contenido del fichero.
Si estamos dentro del plazo de vigencia, aparecerá este mensaje:
Si ya hemos pasado la fecha de fin (podemos probarlo adelantando la fecha del ordenador), veremos este mensaje y el fichero se cerrará:
Y si queremos darle una vuelta más, podemos hacer que, una vez caducado, además de cerrarse se borre del disco duro sin dejar rastro.
Abrimos el fichero y editamos la macro anterior: ahora, si la fecha es posterior a la de caducidad, además de mostrar el mensaje llamaremos a una nueva macro, AutoDestruccio, que hará un Kill del fichero (lo eliminará) y lo cerrará sin guardar:
Private Sub Workbook_Open()
Dim exdate As Date
exdate = "11/30/2014"
If Date > exdate Then
MsgBox ("Este fichero ha caducado")
Call AutoDestruccio
End If
MsgBox ("Quedan " & exdate - Date & " días")
End Sub
Sub AutoDestruccio() On Error Resume Next Application.DisplayAlerts = False ChangeFileAccess xlReadOnly Kill ActiveWorkbook.FullName ActiveWorkbook.Close SaveChanges:=False On Error GoTo 0 End Sub
Ya podéis guardar, cambiar la fecha del ordenador y ver cómo el fichero se elimina del disco duro sin posibilidad de recuperarlo.
Ojo: es una protección disuasoria, no de seguridad. Si quien abre el fichero no habilita las macros, o tiene una copia, la caducidad no se aplica.
Traducción hecha con ayuda de IA a partir del artículo original.








