Por lo general, invertimos tiempo en la creación de plantillas que contienen fórmulas que nos facilitan las tareas diarias. Y a veces por motivos de fuerza mayor, tenemos que compartir información y nos vemos obligados a entregar esa plantilla que tanto esfuerzo y tiempo nos ha costado; que aunque el código de programación lo tengamos protegido con contraseña, pero sigue siendo funcional para quien la recibe.
Ahora bien, si vamos a compartir información con nuestra preciada plantilla y fórmulas contenidas en ella, pues aquí aprenderemos a establecer una fecha de caducidad, es decir, que en un determinado período de tiempo, el libro de trabajo en cuestión, se auto-eliminará.
En esta ocasión les mostraré cómo programar una fecha de caducidad a un Libro de trabajo.
Para lograr nuestro objetivo, debemos seguir los siguientes pasos:
Nos dirigimos al entorno VBA, ahí damos doble clic sobre el objeto "Thisworkbook", y nos aparecerá el área de trabajo, en donde vamos a pegar las siguientes líneas de código:
Private Sub Workbook_Open() Dim FechaCaducidad As Date FechaCaducidad = #8/10/2016# If FechaCaducidad > Date Then MsgBox "Faltan " & FechaCaducidad - Date & " días para su caducidad", vbInformation Else MsgBox "Lo sentimos, pero este libro de trabajo" & vbCrLf & "ha llegado a su fecha de vencimiento", vbCritical Application.DisplayAlerts = False ActiveWorkbook.ChangeFileAccess xlReadOnly Kill ActiveWorkbook.FullName ThisWorkbook.Close End If End SubADVERTENCIA: Maneja esta rutina con mucha precaución.
Observen en la siguiente imagen como les debe quedar...
Muy bien... dentro del evento OPEN del objeto "Thisworkbook", podemos insertar cualquier código de programación que se auto-ejecute cuando se abre el libro de trabajo, que en nuestro caso, es muy conveniente que se dispare la rutina de caducidad del libro en cuestión, ya que con esto, provocaremos que el archivo al llegar a su fecha de vencimiento, pues que simplemente se auto-elimine, impidiendo al usuario recuperarlo; ya que no quedará rastro, ni en la papelera de reciclaje.
Hemos declarado la variable FechaCaducidad de tipo Date, a la cual le asignamos la fecha en que el archivo tendrá que ser eliminado.
Dentro de la condición IF, validamos que si la fecha de caducidad es mayor que la fecha actual, entonces nos tiene que salir el mensaje "Faltan n días para su caducidad"...
ejecutando el código correspondiente, el cual les explico a continuación.
Con la línea Application.DisplayAlerts = False, desactivamos todas las alertas, para evitar que el usuario cancele la rutina, luego con la siguiente línea ActiveWorkbook.ChangeFileAccess xlReadOnly, cambiamos las propiedades del archivo para establecerlo como sólo de lectura, para posteriormente darle el tiro de gracia con Kill ActiveWorkbook.FullName, en donde eliminamos el libro de trabajo activo, identificándolo con su nombre completo. Y finalizamos con el cierre del archivo ThisWorkbook.Close
En cuanto a los mensajes de alerta, los he colocado para que aprecien el funcionamiento de la rutina, los cuales ustedes pueden borrar del código de programación para que pase desapercibido.
Además, tendrán que proteger el proyecto VBA con contraseña, para que los usuarios no tengan acceso a la rutina de auto-eliminación.
Espero que esto les sea de utilidad, y si es así, compartan este material con sus amigos en las diferentes redes sociales.
Nos vemos en la próxima entrega.
Saludos!
Creado por Otto Javier González
Excelente informacion.
ResponderEliminarMuchas gracias por comentar. Me alegra que te guste.
EliminarSaludos cordiales!
ESTA INTERESANTE PROFE. BENDICIONES ME GUSTA, Y CON ESE CODIGO SE PUEDE TAMBIEN DEJAR ABIERTO PARA QUE NO SE ELIMINE EN ALGUN MOMENTO.................
ResponderEliminarPor supuesto! puedes dejar el código por ahí puesto de forma de comentario, y cuando lo necesites, pues simplemente lo activas. Saludos!
EliminarBuen dia...! Sus videos me han sido de mucha utilidad.
ResponderEliminarEstoy muy interesado en un curso On line de programacion VBA ud. Lo imparte? O que me recomienda?
Gracias.
En mi canal de YouTube, podrás encontrar material interesante sobre VBA. Pero no comprendo bien tu pregunta.
Eliminar¿Te refieres a que si doy cursos de forma privada?
Saludos!
Si me pregunta se refiere a si ud. imparte cursos en algun sitio en especial aparte de su canal de YouTube.
EliminarUtilice el codigo de fecha de caducidad pero
Tengo un codigo para contraseña de un archivo y no logro que los dos se ejecuten junto la fecha de caducidad, agradeceria su ayuda gracias.
el codigo de contraseña es el siguiente:
Private Sub Workbook_Open()
Call oculta
Frm_Contraseñas.Show
End Sub
Asi es como tengo los dos codigos:
EliminarOption Explicit
Private Sub Workbook_Open()
Dim FechaCaducidad As Date
FechaCaducidad = #10/10/2016#
If FechaCaducidad > Date Then
MsgBox "Faltan " & FechaCaducidad - Date & " días para su caducidad", vbInformation
Else
MsgBox "Lo sentimos, pero este libro de trabajo" & vbCrLf & "ha llegado a su fecha de vencimiento", vbCritical
Application.DisplayAlerts = False
ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill ActiveWorkbook.FullName
ThisWorkbook.Close
End If
End Sub
Private Sub Workbook_Open()
Call oculta
Frm_Contraseñas.Show
End Sub
SI BORRO EL DE CONTRASEÑA SI FUNCIONA EL DE FECHA DE CADUCIDAD PERO NECESITO EJECUTAR LOS DOS AL INGRESAR.
AGRADEZCO SU AYUDA!
GRACIAS!
NECESITO DE TU AYUDA!
Eliminarle coloque al codigo de fecha de caduciad una fecha anterior a la actual para verificar su funcionamiento y he perdido mi archivo, se que es de risa pero necesito saber si hay alguna manera de recuperar la informacion. :(
El evento OPEN no lo puedes repetir, es por eso que te da error. Todo lo tienes que ejecutar dentro del evento OPEN.
EliminarTe recomiendo que en un módulo aparte coloques el código de caducidad. Luego desde el evento OPEN, inicia el formulario de contraseña y por último deja lo de la caducidad.
Si el archivo se eliminó, ya no lo puedes recuperar, porque se elimina de forma permanente.
Saludos cordiales!
Te agradezco mucho tu ayuda! logre hacerlo con tu expliación.
EliminarMuhas Gracias!
Aprovechando tus conocimientos queria hacerte la siguiente consulta:
Tengo tres tablas:
1. Materiales de Albañileria
2. Materiales de Plomeria
3. Materiales de Carpinteria
Todas las tablas tienen los mismos encabezdos:
Codigo, material,unidad, precio
Necesito buscar un material introduciedo en una celda x su codigo y que me de su nombre, unidad y precio no importando en cual de las tres tablas se encuentre dicho material.
ya intente utilizando buscarv pero no he logrado conformar la formula de manera correcta.
Te agradeceria mucho si pudieras orientarme.
Saludos de Guatemala!
Un abrazo!
Me llamo Pedro Sánchez.....Gran aporte Otto, muchas gracias, muy muy práctico, me gustaría mucho crear un código en donde en vez de bloquear y eliminar el archivo, permita introducir un password para volver a activar el archivo, en caso de que se desconozca el password únicamente se cierrre el archivo en cuestión..
ResponderEliminarEso que necesitas lo tiene el Gestor de Inventarios. Checa la pestaña de descarga, ahí verás el enlace para descargar el proyecto y el vídeo de la última actualización. Saludos!
Eliminarmil respetos
ResponderEliminarMuchas gracias por tu apoyo. Saludos cordiales!
EliminarMuy buen Aporte. Gracias por Compartir.
ResponderEliminarSaludos!
Me alegra que te guste. Saludos y gracias por el apoyo!
Eliminarexcelente aporte, gracias por compartir tus conocimientos y que Dios siga bendiciendo su vida.
ResponderEliminarMuchas gracias Rafael. Me alegra que te guste el contenido.
EliminarSaludos y un fuerte abrazo!
buen dia estimado Otto gran aporte mi amigo queria preguntarle como puedo añadirle una contraseña al libro de trabajo para que se active en una fecha especificada y luego de ese tiempo pida la clave de seguridad que asignamos a dicho libro. y luego de 3 intentos de ingresar una clave erronea este se elimine automaticamente. a la espera de sus buenos aportes.
ResponderEliminarHola mi amigo, gusto en saludarte. Está bien interesante tu sugerencia. Y la verdad, con este mismo código se puede hacer. Lo haré en un rato libre. Saludos cordiales!
EliminarProfe una vez mas feliz tarde con una consulta se
ResponderEliminarpuede ponerle fecha de caducidad a un botón de
comando o un userform en vba gracias x tu
respuesta.
Sí, por supuesto! Puedes hacer que en un determinado período de tiempo, dicho botón se deshabilite o el formulario quede bloqueado. Más adelante haré un par de ejemplos de eso para que lo puedas descargar desde la pestaña "Descargas" de este Blog.
EliminarSaludos!
excelente tutorial como todos los que he visto de usted profesor mil gracias por compartir su conocimiento
ResponderEliminarGracias a ti por el apoyo. Saludos!
EliminarCordial saludo Otto Javier. Muchas gracias por compartir su conocimiento. Me ha parecido muy interesante este código para una información que comparto en mi trabajo y que cambia periódicamente. Le deseo muchas felicidades a usted y a su familia
ResponderEliminarMe alegra escuchar eso. Saludos cordiales!
EliminarEstimado Otto. Gracias por todo el conocimiento que ha impartido, es muy valioso su aporte, le escrito por algunas ocasiones y me gustaría saber si tu usted me puede asesorar de forma privada con un proyecto que estoy ejecutando.
ResponderEliminarExtraordinario aporte profesor Otto, Muchas gracias. BENDICIONES
ResponderEliminarMi pregunta es: como evitar si el usuario cambia la hora del windows estos codigos serial vulnerables....
ResponderEliminarMi pregunta es: como evitar si el usuario cambia la hora del windows estos codigos serial vulnerables....
ResponderEliminaressste blog! sé que solo tengo 30 <-) pero.. donde estuvo toda mi vidaaaw! es grandioso!
ResponderEliminarBuen Dia, hará algún capítulo de reportes, necesito crear un reporte en donde por medio del agente o vendedor me despliegue las razones sociales que atiende y los proyectos que tiene a su cargo, agradezco de antemano su ayuda
ResponderEliminarExcelente Aporte podrias compartir la macros via email...
ResponderEliminar¿se puede subir un archivo a sharepoint con macros y código VBA y que sea totalmente funcional?
ResponderEliminarExcelente como siempre Maestro.
ResponderEliminarHE PROBADO CON UN MACRO QUE TENIA Y LO HA ELIMINADO ¿¿COMO RECUPERO???
ResponderEliminarCREO QUE LO CA...
HE PROBADO CON UN MACRO QUE TENIA Y LO HA ELIMINADO ¿¿COMO RECUPERO???
ResponderEliminarCREO QUE LO CA...
Gracias Profesor.
ResponderEliminarBuen aporte prof.
ResponderEliminarMe alegra mucho que te haya gustado Rubén!
EliminarSaludos :)
Estimado Otto sumarme a la gratitud por todos los conocimientos que comparte en este su blog e incluso por youtube, son de mucha utilidad un gran saludos y un inmenso GRACIAS por su tiempo compartido.
ResponderEliminarConvocatoria Laboral
ResponderEliminarBuenos días Otto Javier
La empresa Promotora Telco Invesiones SAS dedicada al sector de las Telecomunicaciones con su sede principal en Dosquebradas - Risaralda, solicita personal para el cargo de auxiliar administrativo que tenga conocimientos avanzados en Excel, solicito su colaboración si es posible para difundir por su canal esta vacante.
Muchas gracias por la atención brindada
Feliz día
Freddy Arias Hoyos
Cl 8 # 10-73 Zona Industrial la Popa
Cel 3177339943 Tel. 3306230 Ext. 203
Dosquebradas - Risaralda
buen día espero y se encuentre bien, queria comentarle un detalle que tengo con uno de mis trabajos de libro de excel este archivo lo comparto con usuarios del corporativo.
ResponderEliminarpero siempre le han de mover, quisiera saber si me puede apoyar con un tutorial si hay manera de que ellos puedan utilizar el archivo como lectura y redación pero que si quieren guardar les pida una clave de administrador o simplemente que no les deje guardar y que solo el administrador pueda hacer los cambios en este libro
excelente como siempre, me motivo mas y mas de excel gracias a sus tutoriales de sus tutoriales he aprendido mucho y e avanzado a pasos a paso !Gracias! como siempre impartiendo sus conocimientos.
ResponderEliminarSaludos :)