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

 

Respuestas

  1. Una consulta….Me podria decir si existe alguna macro o programa para quitar fecha de caducidad a un archivo de excel. Tengo un archivo importante para mi que al abrir dice que vence fin de mes. gracias, Mi correo es tmaq28@gmail.com
  2. HOLA SOY LUIS , UNA PREGUNTA SERA POSIBLE ELIMINAR SOLO LOS DATOS ? SIN NECESIDAD DE ELIMINAR EL LIBRO?, IGUAL QUE SE ELIMINE EN CIERTO TIEMPO.
  3. Luis, si no te quieres liar mucho, sustituye todas las instrucciones del procedimiento Eliminar_archivo por la siguiente línea:

    Cells.ClearContents

    Saludos.

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

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

  6. Estimado Exceleta!!,
    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
  7. Hola, Oscar, me alegra que sigas fielmente la web.

    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.

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

  8. Hola, soy otro “viejo” Oscar que se pone a divertirse con excel.
    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
  9. Hola, Oscar:
    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.
  10. 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

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

    1. Alex, pulsa Alt + F11 y crea un nuevo módulo. Ahí es donde debes pegar el código.

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

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

  13. 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!

  14. Hola sergio te cuento q no puedo hacer funcionar me puedes ayudar por favor

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

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

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

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

  17. Hola estimado, he probado el código pero no se autoelimina, solo se cierra. Al parecer, no se puede en word.

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

  18. 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?

  19. 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!!

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

    1. ¡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…

  21. 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?

  22. 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?

    1. Hola Franklin! Creo que no es posible, pero no estoy totalmente seguro. Si alguien lo ha conseguido, me gustaría saberlo…

Los comentarios están cerrados.