, , ,

Añadir caducidad a un Excel y hacer que se cierre o se borre del disco

·

Añadir caducidad a un Excel y hacer que se cierre o se borre del disco

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).

Guardar como en ExcelElegir la ubicación del ficheroTipo de fichero: libro de Excel habilitado para macros

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

Código de la macro en el editor de VBA

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:

Mensaje con los días que quedan

Si ya hemos pasado la fecha de fin (podemos probarlo adelantando la fecha del ordenador), veremos este mensaje y el fichero se cerrará:

Mensaje de fichero caducado

El fichero se cierra tras el aviso

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

Macro de autodestrucción en el editor de VBA

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.