Excel temporizado

Deseo saber la forma de que un documento excel se cierre en un determinado horario. Es decir una ves que el documento se abra a las 10 de la mañana y se cierre a las 4 de la tarde confío en tu genialidad
Gracias

1 respuesta

Respuesta
1
Revisá el evento OnTime del objeto Application; un ejemplo podría ser
Private Sub Workbook_Open()
DoEvents
Application.OnTime EarliestTime:=TimeValue("16:00"), Procedure:="Afuera"
End Sub
y en un modulo tipeas el procedimiento Afuera; algo como
Sub Afuera()
Workbooks("tuArchivo").Close SaveChanges:=True
End Sub
Te cambio el procedimiento Afuera para que sea "más general"
Sub Afuera()
ThisWorkbook.Close
End Sub
Define que quieres hacer con el SaveChanges (True: graba los cambios; False: cierra sin grabar; y si no pones nada te pregunta que quieres hacer -pero no cerrará el archivo hasta que decidas algo)
Genial solo tengo una duda como puedo lograr que, por decir se mantenga cerrado el documento por 2 horas o tres horas consecutivas en la cual nadie pueda abrir el documento una ves que este se cierra
Gracias y disculpa lo insistente
En principio lo que se me ocurre es que tengas en algún lugar de la planilla (oculto al resto) una variable que sea (ejemplo) hora cierre
luego en la macro Afuera la cambias por:
Sub Afuera()
Range("horaCierre") = Time
ThisWorkbook.Close True
End Sub
Con esto grabas a que hora cerraste el archivo y en el evento open del libro pones algo similar a:
Private Sub Workbook_Open()
if (Time - Range("horaCierre")) < (2/24) then
MsgBox "Todavía no pasó el tiempo valido; pruebe mas tarde"
ThisWorkbook.Close False
End If
DoEvents
Application.OnTime EarliestTime:=TimeValue("16:00"), Procedure:="Afuera"
End Sub
Todo esto es ejemplo para darte una idea; cualquier cosa comenta
Ok supler claro pero tengo un detalle
Como ago para que me deje la hora fija en el rango de la hora de cierre . o para que esta sea estándar siempre
Gracia genio
Si lo haces como te puse
Rango("horaCierre") = Time
...
Te debería fijar la hora del momento de cierre del archivo (te deja el valor que tenga el reloj en el momento y No la fórmula)
Salvo que quieras poner directamente una hora (independiente de la hora que cierren el archivo, si es así no hace falta definir el rango pero debes cambiar la condición al momento de abrir el archivo)
Saludos y comenta para ver como seguimos
Gustavo
Por ejemplo si quieres que el archivo NO pueda ser abierto entre las 16 y las 18 hs, puedes poner en el evento Open algo como
Private Sub Workbook_Open()
if (Hour(Time) >=16 and Hour(Time) <= 18) Then
MsgBox "Todavía no pasó el tiempo valido; pruebe mas tarde"
ThisWorkbook.Close False
End If
Saludos y tal vez te aclare un poco más
Gustavo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas