Cómo eliminar automáticamente un archivo de Excel tras una fecha determinada
Un colega, que también trabaja con Excel, me preguntó el otro día, si sería posible eliminar un archivo de Excel de forma automática, una vez ha pasado una determinada fecha, para crear una demostración 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 código en un módulo estándar:
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 Expiración" Else MsgBox "Lo siento, el tiempo de prueba a terminado." & Chr(13) _ & "Este archivo se autoeliminará.", vbCritical, "Tiempo de Expiración" Call Eliminar_archivo End If End Sub
Cells.ClearContents
Saludos.
De la papelera de reciclaje es fácil recuperar el archivo. Sólo tienes que pulsar sobre él con el botón derecho y seleccionar “Restaurar archivo”. El archivo volverá a la carpeta en la que lo eliminaste.
Si el archivo ha sido eliminado ya de la papelera de reciclaje, también es posible recuperarlo, pero necesitarás un software específico para esto. Echa un vistazo al siguiente enlace donde encontrarás algunos de los programas:
http://www.emezeta.com/articulos/15-aplicaciones-gratis-para-recuperar-archivos-borrados
Espero haberte ayudado.
Saludos
Imagino que la fecha de caducidad estará programada con VBA. Sólamente habría que entrar en el código de la macro y modificarla para inhabilitar la fecha.
Saludos.
soy un “viejo” que aún anda en estas cosas.
He copiado la macro para eliminar un archivo y no termina de funcionar. Manda el aviso y luego me da error.
Seguramente no he especificado algo en la macro. La copié y la pegué como la has escrito tú.
En qué lineas debo colocar “mis ” datos???.
Y como sería la macro para eliminar el archivo sin ningún tipo de aviso. Llegado el día: Puffff, desapareció!!
Muchas gracias, Oscar, un admirador
Para que la macro funcione correctamente debes introducir una fecha válida en la celda A1. Si la fecha es posterior al día de hoy, te aparecerá¡ un mensaje diciendo los días que restan para llegar a esa fecha. si introduces una fecha anterior, el archivo se eliminará¡ automáticamente.
Para hacer que el archivo se elimine automáticamente, debes colocar el código, en vez de en un módulo estándar, bajo el evento Workbook_Open, pero ten cuidado, ya que si introduces una fecha anterior al día de hoy y cierras el archivo, cuando lo vuelvas a abrir, se ejecutará el código y eliminará el archivo automáticamente.
Hola Oscar, gracias por el codigo. Te comento que intente hacerlo para eliminar el archivo cuando se abra pero me fue imposible. Realmente no se como hacer que el evento workbook_open funcione para que elimine el archivo al abrir. podrias colocar el codigo incluyendo el wookbook_open, te lo agradeceria muchichisisimo
He hecho las mismas pruebas de mi tocayo y no llego al final.
Si por ejemplo tengo un file que se llama “lista de clientes” y quiero que “desaparezca” el 31.12.2014, como sería la makro???, Muchas gracias por todo lo que publicas
Solamente tendrás que modificar la línea de código que comienza por If, sustituyendo “DateSerial(Year(fecha), Month(fecha), Day(fecha))” por la fecha que desees.
Buenas y Gracias de antemano. Mi inquietud es ¿Cómo se haría no solo con una fecha determinada, sino a una hora determinada de esa fecha límite? Es decir, ejecutar alguna acción cuando se cumpla el plazo siguiente, por ejemplo, 13:30 horas del día 12/06/2015. Salu32
Buen día la macro funciona excelente pero solo para una hoja si tengo un archivo con dos hojas funciona mientras cierre el archivo en la hoja donde se programo la fecha pero si lo cierro en otra hoja menciona que ya caduco como puedo realizar ese cambio para que pueda cerrar mi archivo en cualquier hoja y siga funcionando ????
Gracias de antemano
donde pego ese codigo?
Alex, pulsa Alt + F11 y crea un nuevo módulo. Ahí es donde debes pegar el código.
Excelente, trate de emular el código para usarlo en un archivo de word pero no pude 🙁 podrías presentarnos el código para un archivo que haga lo mismo pero en word?
Saludos y gracias de antemano
No te sé responder, Marlon. Cada programa tiene su propio modelo de objetos y, aunque son similares, no siempre se implemeta el código de la misma forma. Lo que te puedo decir es que de la misma forma que a un libro de Excel se le denomina Workbook, a un documento de Word se le llama Documents.
Increible ver que despues de 2 años esta info sigue siendo de mucha utilidad , mil gracias Sergio, abusando de tu nobleza,he intentado asignar el boton de un userform a una tecla de funcion F9), pero aun no he dado en el clavo, crees que podrias echarme una mano con eso?
Saludos y gracias de antemano!
Hola sergio te cuento q no puedo hacer funcionar me puedes ayudar por favor
Lurdes, desde el foro de la web te ayudaré mejor.
Saludos
Buenas noches,
Primero que todo darte las gracias por el macro para eliminar el archivo auomaticament, bueno jo he utilizado la variante de limpiar todos los datos, como tu dijiste, i todo perfecto: “Cells.ClearContents” com el excel todo funciona perfectament. Pero el problema que tengo ahora es que trabajo con el excel google driver y el sistema de programacion es diferente, te agradeceria que me ayudaras a transpasas el programa macro al sistema de google drive, aqui te pongo el programa que utilizo y que tu facilitaste en este foro, muchas gracias :
_____________________________________________________________________________________
Sub Eliminar_archivo()
Cells.ClearContents
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 Expiración"
Else
MsgBox "Lo siento, el tiempo de prueba a terminado." & Chr(13) _
& "Este archivo se autoeliminará.", vbCritical, "Tiempo de Expiración"
Call Eliminar_archivo
End If
End Sub
Lo siento, Josep, pero en ese aspecto no te puedo ayudar. Las dos hojas de cálculo utilizan lenguajes diferentes y no tengo nada de experiencia en el de Google Drive.
Haz tu consulta en el foro de la web. Quizá haya un usuario que tenga más experiencia que yo en GD.
Sergio, gracias por compartir esta información, a mi mente vienen otras inquietudes.
Pasa que en ocasiones en mi trabajo debo de compartir información que es confidencial y que no debe de estar dispersa por muchos lados, por lo que me gustaría saber si este mismo documento puedo colocarle “candados” para evitar que sea copiado (Ya sea copiado el documento o copiada la información que está en las celdas), agradecería tus comentarios, me serían de mucha ayuda!
Gracias de antemano!
Saludos Cordiales
Buenas tardes, lo he probado en Word y no sale… Un gran favor, podrìan pasar la estructura del còdigo para word para probarlo. Desde ya, muy agradecido.
Prueba con la siguiente macro. Sólo habría que cambiar el nombre de los objetos, ya que Word no tiene el objeto ThisWorkBook. Además, la fecha habría que introducirla a mano porque Word no tiene celdas donde pueda introducirse.
Sub eliminar_archivo()
Application.DisplayAlerts = False
Application.Documents.Close
End Sub
Sub caducidad()
‘deshabilitamos boton cancelar del msgbox
Application.EnableCancelKey = xlDisabled
fecha = #8/16/2018#
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 Expiración" Else MsgBox "Lo siento, el tiempo de prueba a terminado." & Chr(13) _ & "Este archivo se autoeliminará.", vbCritical, "Tiempo de Expiración" Call eliminar_archivo End If End Sub
Hola estimado, he probado el código pero no se autoelimina, solo se cierra. Al parecer, no se puede en word.
Jim, puedes sustituir la macro eliminar_archivo por este código:
Sub eliminar_archivo()
Dim MiArchivo As String
MyFile = ActiveDocument.Path & "\" & ActiveDocument.Name
ActiveDocument.Close (wdDoNotSaveChanges)
Kill MiArchivo
End Sub
Esta macro elimina el propio archivo pero para que funcione, debes alojarla en el libro de macros personal y no en el documento de Word que quieres eliminar.
Hola Sergio, de mucha ayuda tu macro pero ya la descubrieron hay forma de ocultarla o que me pida una contraseña para poder modificar la macro y la persona que la está usando no cambie la fecha?
Saludo!!
Me funciono pero debí de ejecutarla manualmente, imagínate que tengo varias hojas, en cual hoja de esa debiera de colocar la fecha, le coloque en todas y no funciona solo si la ejecuta manualmente, así que seria bueno el especificarle el nombre de la hoja donde se convalidará la fecha
Gracias!!
Excelente aporte! Ahora, una pregunta, como podemos evitar que algún usuario guarde el archivo en un formato “macro-free”, ya que de esta manera no funcionaría la macro de “autoeliminar”. Muchas gracias de antemano.
¡Hola Rigoberto!
Con un poco de código puedes hacer que el archivo únicamente se pueda guardar con extensión xlsm.
Pero siento decirte que ningún libro de Excel está a salvo de usos inadecuados…
hola sergio…recibo archivos de excel via mail con el mismo formato y quisiera actualizar con cada uno de ellos una planilla excel general de forma automatica. Es posible hacer?
Hola Raúl!
Con Power Query puedes realizar esa tarea. Si necesitas ayuda con ella, puedes buscarla en el foro de la web.
Hola Sergio, mi nombre es Franklin García y quiero consultarle ¿si quiero que el archivo se elimine una vez llegue la fecha de caducidad sin necesidad de abrirlo, se puede?
Hola Franklin! Creo que no es posible, pero no estoy totalmente seguro. Si alguien lo ha conseguido, me gustaría saberlo…