Macro para guardar y cerrar libro a una hora determinada

Necesito una macro que guarde y cierre mi libro a las 18:00 hs y a las 6:00 am. Ya en ThisWorbook tengo otras macros, las que copio a continuación:

Private Sub Workbook_Open()
Application.OnTime TimeValue("23:50:00"), "Macro2"
End Sub
Sub auto_Open()
  Call Reloj
End Sub
Sub Reloj()
  Range("B203").Formula = "=NOW()"
  Application.OnTime Now + TimeValue("00:00:01"), "reloj"
End Sub

y al volver a usar

Private Sub Workbook_Open() me pone que se ha detectado "nombre ambiguo" y no me deja correr la macro.

Respuesta
2

Solamente puedes poner un evento y dentro de ese evento debes poner el código que necesitas:

Private Sub Workbook_Open()
Application.OnTime TimeValue("23:50:00"), "Macro2"
'
'Aquí debes poner el otro código
End Sub

Estimado Dante, gracias por responder, te molesto para consultarte si es posible que el comando  guarde y cierre el libro si esta abierto en dos horas determinadas del día, 06:00 y 18:00 hs. La macro que tengo yo lo cierra luego de un tiempo de inactividad. 

Mil gracias 

Prueba lo siguiente

En los evento de Thisworkbook:

Private Sub Workbook_Open()
  Dim n As Variant
  '
  Application. OnTime TimeValue("23:50:00"), "Macro2"
  '
  If Time > TimeValue("18:00") Then
    N = Format(TimeValue("06:00:00") - Time, "hh:mm:ss")
  ElseIf Time > TimeValue("06:00") Then
    N = Format(TimeValue("18:00:00") - Time, "hh:mm:ss")
  End If
  Application.OnTime Now + TimeValue(n), "cerrar"
End Sub

En un módulo inserta esta macro:

Sub cerrar()
  ThisWorkbook.Close True
End Sub

¡Gracias! Dante, excelente tu aporte, como siempre. 

Muy agradecido 

Me agrada ayudarte, gra cias por comentar

Estimado Dante me comenzó a salir Error 13 "no coinciden los tipos" cuando abro el archivo que contiene la fórmula que me enviaste días atrás, cuando elijo depurar queda resaltado esta parte del evento, ¿ves algún error en la transcripción?

Muchas Gracias

Prueba nuevamente, acerca el mouse a la variable "Time" y dime cuál es el contenido, realiza lo mismo para la variable "n"

Estimado, no se si entiendo tu pedido pero no sale ninguna información al pasar o acercar el mouse por esas variables 

Cuando te envía el error, presiona el botón depurar, estando en el código, acerca el mouse sobre una variable, debe aparecer un recuadro con el contenido de la variable, ejemplo:

Ok Dante, entiendo,  te comento hoy no lo volvió a hacer, recién la probé cambiando la hora y se cerró correctamente, voy a esperar para ver si actúa correctamente el evento programado para las 23:55 y te comento. Muchas gracias por tu tiempo y compartir tus conocimientos!

Hola Dante, te paso la copia del error y lo que aparece al acercar el cursor en la n ("n=vacío") y en time aparece la hora actual en el formato hh:mm:ss. Había dejado de hacerlo pero abrí la planilla en otra PC y volvió a salir el error cuando la planilla esta abriendo

Prueba con lo siguiente:

Private Sub Workbook_Open()
  Dim n As Variant
  '
  Application. OnTime TimeValue("23:50:00"), "Macro2"
  '
  If Time > TimeValue("18:00") Then
    N = Format(TimeValue("06:00:00") - Time, "hh:mm:ss")
  ElseIf Time > TimeValue("06:00") Then
    N = Format(TimeValue("18:00:00") - Time, "hh:mm:ss")
  Else
    n = Format(TimeValue("18:00:00") - Time, "hh:mm:ss")
  End If
  Application.OnTime Now + TimeValue(n), "cerrar"
End Sub

Estimado Dante, ya realice la modificación, la N se me pasa automáticamente a minúscula, ¿eso no modifica nada?.

Probé la macro y funciona correctamente, espero no se repita el error. Quería comentarte que solucionando este inconveniente termino con este proyecto en el que estaba y que me quedo muy completo gracias al invalorable aporte que me realizaron varios expertos, pero quiero hacerte un reconocimiento especial a Ti, ya que me ayudaste en las macros más complejas y de una manera muy exacta en cada caso.

Muchísimas Gracias!

La N se me pasa automáticamente a minúscula

No importa.


Me alegra ayudarte, gra cias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas