Cerrar automatico

06/10/2008 - 18:53 por J. Ricardo Hdz. | Informe spam
Hola, buenos dias,

tengo un archivo de excel en una carpeta en la red, necesito que el archivo
se cierre despues de cierto tiempo de inactividad, lo que pasa es que hay
personas que se les olvida cerrar el programa y despues yo no puedo hacer
actualizaciones.
espero haberme dado a enteder.
De antemano gracias por su apoyo.
 

Leer las respuestas

#1 Héctor Miguel
07/10/2008 - 03:47 | Informe spam
hola, J. Ricardo !

tengo un archivo de excel en una carpeta en la red, necesito que el archivo se cierre despues de cierto tiempo de inactividad
lo que pasa es que hay personas que se les olvida cerrar el programa y despues yo no puedo hacer actualizaciones...



prueba y dedices el "cierto tiempo" de inactividad (solo asegurate de que las macros son habilitadas)
te expongo un codigo de ejemplo para monitorear por inactividad en tu libro y cerrarlo (si el usuario no responde) :D

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

es la forma mas delgada (las menos lineas de codigo) que he podido imaginar (hasta ahora)
lo que hace es...
-> al abrir... le avisa al usuario que este al pendiente de un cierto tiempo de inactividad
usa un tipo de mensaje como el MsgBox pero... automatico (NO requiere respuesta del usuario)
-> considera como actividad, cualquier cambio de celda/s en cualquier hoja
(usando el evento del libro Workbook_SheetSelectionChange)
(de pasadita... es un evento que tambien se re/dispara cuando se cambian valores a las celdas)
-> si no ha habido actividad, muestra un mensaje...
(tambien automatico pero dando la opcion al usuario de regresar a la actividad)

1) copia el codigo en los modulos indicados de un libro nuevo (solo por si las dudas) :))
2) (usando cualquier nombre temporal) graba el libro... cierralo y... abrelo de nuevo
3) una vez que consideres/modifiques a los tiempos apropiados (y demas monerias)
lo instalas/aplicas/adaptas a los libros donde lo necesitas.

en el modulo de codigo del libro (ThisWorkbook) ==Private Sub Workbook_Open()
Permanecer = True: Mensaje_Inicial: ChecarActividad
End Sub
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, ByVal Target As Range)
Permanecer = True
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Permanecer = False: Cerrando = True: ChecarActividad
End Sub

en un modulo de codigo normal ==Option Private Module
Public Permanecer As Boolean, Cerrando As Boolean, Tiempo As Double
Public Const EstaMacro As String = "ChecarActividad"
Public Const Lapso As String = "0:00:15" <= para 10 minutos cambialo a: "0:10:00"
Public Const Espera As Long = 5 el tiempo en segundos que se espera el mensaje por una respuesta del usuario
Sub Mensaje_Inicial()
CreateObject("WScript.Shell").Popup _
"Este libro se monitorea por inactividad cada lapso de " & Lapso & vbCr & _
"Este aviso desaparecerá en " & Espera & " segundos...", Espera, "Mensaje temporal"
End Sub
Sub ChecarActividad()
If Cerrando Then GoTo Salir
If Not Permanecer Then Cerrar_O_No
Tiempo = Now + TimeValue(Lapso)
Salir:
On Error Resume Next
Application.OnTime _
EarliestTime:=Tiempo, _
Procedure:=EstaMacro, _
Schedule:=Permanecer
If Cerrando Then Exit Sub
If Not Permanecer _
Then ThisWorkbook.Close True _
Else Permanecer = False
End Sub
Sub Cerrar_O_No()
Select Case CreateObject("WScript.Shell").Popup( _
"Debo cerrar el archivo por inactividad." & vbCr & _
"Tienes " & Espera & " segundos para responder...", Espera, _
"Monitor de actividad...", 33)
Case -1, 1: Permanecer = False
Case 2: Permanecer = True
End Select
End Sub

Preguntas similares