Cerrar una hoja Excel abierta por otro usuario

26/01/2005 - 11:50 por Emilio \(en el curro\) | Informe spam
Hola a tod@s
me surge un problemilla que no sé si tendrá solución, en Access lo tengo
resuelto pero en Excel
Se trata de lo siguiente, en la intranet de la empresa hay varios cientos de
hojas Excel con acceso de solo lectura para muchos usuarios y otros con
lectura y escritura, el problema surge cuando alguno de estos se olvida de
cerrar el libro y se marcha dejandolo por horas abierto.
Conocéis algún metodo para o bien por inactividad o bien forzandolo de
alguna manera poder cerrar el libro en remoto.

Gracias anticipadas

Saludos a tod@s
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
27/01/2005 - 01:27 | Informe spam
hola, Emilio !

... un problemilla que .. en Access lo tengo resuelto pero en Excel...
... en la intranet de la empresa ... hojas ... con acceso de solo lectura ... y otros ... lectura y escritura
... problema ... cuando ... se olvida ... cerrar el libro ... dejandolo por horas abierto.
... algun metodo para o bien por inactividad o bien forzandolo de alguna manera poder cerrar el libro en remoto.



1° ¿como has resuelto este 'detalle' en access? [es solo 'curiosidad'] :))
2° para excel [segun yo] se 'tendrian que' usar macros y eventos [pero... 'ya sabes']:
si las macros no son 'operables' al abrir el libro [por nivel de proteccion o por decision del usuario]...
... nos quedariamos... 'donde mismo' :((

¿comentas si son 'validas' las macros?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Emilio \(en el curro\)
27/01/2005 - 08:45 | Informe spam
Muchas Gracias Hector Miguel
si que serían validas las macros, de hecho en la inmensa mayoría de ellas ya
hay código, sin el cual sería inutiles, luego podríamos añadir mas.
En cuanto a como lo he resuelto en access, tienes un ejemplo en mi web,
sección de descargas de access http://www.mvp-access.com/emilio y si quieres
cualquier aclaración al respecto solo tienes que decirlo ;-))


Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro


"Héctor Miguel" escribió en el mensaje
news:
hola, Emilio !

> ... un problemilla que .. en Access lo tengo resuelto pero en Excel...
> ... en la intranet de la empresa ... hojas ... con acceso de solo


lectura ... y otros ... lectura y escritura
> ... problema ... cuando ... se olvida ... cerrar el libro ... dejandolo


por horas abierto.
> ... algun metodo para o bien por inactividad o bien forzandolo de alguna


manera poder cerrar el libro en remoto.

1° ¿como has resuelto este 'detalle' en access? [es solo 'curiosidad']


:))
2° para excel [segun yo] se 'tendrian que' usar macros y eventos


[pero... 'ya sabes']:
si las macros no son 'operables' al abrir el libro [por nivel de


proteccion o por decision del usuario]...
... nos quedariamos... 'donde mismo' :((

¿comentas si son 'validas' las macros?
saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
28/01/2005 - 12:27 | Informe spam
hola, Emilio !

si que serian validas las macros ... ya hay codigo ... podriamos añadir mas [...]



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 'dandole 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.

si cualquier duda... ¿comentas?
saludos,
hector.
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"
Public Const Espera As Long = 5
Sub Mensaje_Inicial()
CreateObject("WScript.Shell").Popup _
"Este libro se monitorea por inactividad cada lapso de " & Lapso & vbCr & _
"Este aviso desaparecerá en 5 segundos...", 5, "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
Respuesta Responder a este mensaje
#4 Emilio \(en el curro\)
28/01/2005 - 13:26 | Informe spam
Muchisimas gracias Hector Miguel, eres un genio :-))))
Funciona de maravilla como era de esperar, ahora a ver si soy capaz de
"digerirlo"

Gracias de nuevo

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro


"Héctor Miguel" escribió en el mensaje
news:%
hola, Emilio !

> si que serian validas las macros ... ya hay codigo ... podriamos añadir


mas [...]

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 'dandole 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.

si cualquier duda... ¿comentas?
saludos,
hector.
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"
Public Const Espera As Long = 5
Sub Mensaje_Inicial()
CreateObject("WScript.Shell").Popup _
"Este libro se monitorea por inactividad cada lapso de " & Lapso &


vbCr & _
"Este aviso desaparecerá en 5 segundos...", 5, "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


Respuesta Responder a este mensaje
#5 Emilio \(en el curro\)
28/01/2005 - 13:40 | Informe spam
A ver si lo he entendido, Excel no es mi fuerte :(

Al abrirse el libro se ejecuta ComprobarActividad y en ese momento se
"programa" el temporizador para que ComprobarActividad se vuelva a ejecutar
en 15 segundos, si ninguna de las variables dice lo contrario, se cierra.
Lo dicho genial
Gracias de nuevo :-))))

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro


"Emilio (en el curro)" <miliuco56 ARROBA hotmail.com> escribió en el mensaje
news:%
Muchisimas gracias Hector Miguel, eres un genio :-))))
Funciona de maravilla como era de esperar, ahora a ver si soy capaz de
"digerirlo"

Gracias de nuevo

Saludos a
Emilio
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro


"Héctor Miguel" escribió en el mensaje
news:%
> hola, Emilio !
>
> > si que serian validas las macros ... ya hay codigo ... podriamos


añadir
mas [...]
>
> 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 'dandole 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.
>
> si cualquier duda... ¿comentas?
> saludos,
> hector.
> 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"
> Public Const Espera As Long = 5
> Sub Mensaje_Inicial()
> CreateObject("WScript.Shell").Popup _
> "Este libro se monitorea por inactividad cada lapso de " & Lapso &
vbCr & _
> "Este aviso desaparecerá en 5 segundos...", 5, "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
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida