Cerrar libro sin intentar volver a abrirlo

Hola, buenos días. Tengo una macro en la oficina que cierra un libro pasados unos minutos (para que nadie abra el libro y se olvide de cerrarlo y no permita acceder a los demás). Esa macro funciona perfectamente; el problema es que cierra el libro pero intenta volver a abrirlo. Transcribo la macro a continuación:
sub timer()
segundero = segundero + 1
if segundero = 60 then
minutero = minutero + 1
if minutero = 10 then
'activeworkbook.close false
worksheets(activeworkbook).close
segundero = 0
cmd_timeron
minutero = 0
end if
segundero = 0
end if
end sub
sub timer_ontimer()
call timer
if timer_enabled then call timer_start
end sub
sub timer_start(optional byval interval as double)
if interval > 0 then timer_interval = interval
timer_enabled = true
if timer_interval > 0 then application.ontime (now + timer_interval), "timer_ontimer"
end sub
sub timer_stop()
timer_enabled = false
end sub
'thisworkbook.close
Muchas gracias por tu atención. Saludos.

1 respuesta

Respuesta
1
Veo que tienes realizado un bucle que cierra y abre tu libro, en una macro pones:
sub timer_ontimer()
call timer
if timer_enabled then call timer_start
end sub
Y en otra
sub timer_start(optional byval interval as double)
if interval > 0 then timer_interval = interval
timer_enabled = true
if timer_interval > 0 then application.ontime (now + timer_interval), "timer_ontimer"
end sub
Como puedes ver en la primera dices Si timer_enabled es cierto salta a timer_start
Y en la segunda dices Si se cumple que interval sea mayor que 0 (cosa que se cumple pasado 1 segundo) timer_interval=interval (hasta aquí bien) pero ahora dices timer_enabled=true (y como si esto se cumple según la primera macro macro se jecuta timer_start pues ya tienes el bucle infinito creado)
Analiza tu macro para que una condición no ejecute la otra si quieres finalizarla.
>Un saludo
>Julio
Perdona mi ignorancia, pero soy incapaz de rectificar la macro para que sólo cierre el libro el libro pasado un tiempo, pero que no lo vuelva a abrir en ningún caso.
Insisto, perdoma mi torpeza.
Aquí falta la macro que debes de tener en Workbook_Open()
Buscala y me la envías.
>Un saludo
>Julio
En Workbook tengo la siguiente clave. Perdona, pero no entiendo qué tiene que ver con con la otra macro.
Private Sub Workbook_Open()
Macro3
cmd_TimerOn
End Sub
Saludos.
Pues estoy intentando comprobar que macro comienza a ejecutarse cuando se abre el libro y veo que es la Macro3 que no me has puesto necesito esa macro.
Si al abrir el libro Workbook_Open no se comienza a ejecutar una macro que comience a valorar el tiempo abierto, las macros que tu has puesto aquí por si solas no hacen nada.
>Un saludo
>Julio
Perdona, tienes toda la razón.
La Macro 3 ejecuta otras macros, entre ellas la de la hora. La macro 1 dirige hacia el mes (enero ...) y la macro 2 dirige al día dentro del mes.
Sub Macro3()
Call TiempoLoco
Call Macro1
Call Macro2
Call hora
End Sub
Sub TiempoLoco()
    Range("a4").Formula = "=NOW()"
    Application.OnTime Now + TimeValue("00:00:01"), "TiempoLoco"
End Sub
Las macros funcionan todas bien; la de hora cierra el programa cuando pasan los diez minutos; pero el problema es que intenta volver a abrir el libro.
Gracias por la pérdida de tiempo.
Bien pues necesito la macro que cierra la aplicación y la que vuelve a abrirla, para ponerle alguna condición para que no la abra por ejemplo que si el libro esta cerrado que termine la macro.
>Un saludo
>Julio

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas