Hoy aprenderemos qué método debemos emplear para ejecutar una macro en un momento del tiempo (hora, minuto y segundo del día) concreto. Se trata de dejar programada la ejecución de un procedimiento a una hora determinada.
Si bien habrá que tener presente que para que este método surta su efecto el Libro debe estar abierto!!!.
El método Application.OnTime programa, entonces, la ejecución de un procedimiento a una hora especificada o después del transcurso de un período de tiempo específico.
Veamos un ejemplo, para lo que construiremos un evento Open para activar el método .OnTime e indicar a qué hora queremos ejecutar nuestra macro llamada 'MacroPrincipal'.
Por tanto accederemos al Editor de VBA (alt+F11) e insertaremos en ThisWorkbook el siguiente código:
Adicionalmente en un módulo del Editor de VBA añadiremos las líneas de nuestra macro:
Ya sólo nos queda esperar a que la hora de nuestro sistema (de nuestro equipo) llegue a las 17:30:00, en ese instante se ejecutará el procedimiento indicado, en el ejemplo la macro 'MacroPrincipal'... apareciendo el mensaje (MsgBox):
Si en lugar de programar a una hora concreta queremos ejecutar una macro 10 segundos después de la apertura de nuestro Libro, en el editor de VBA en ThisWorkbook incluiríamos las siguientes líneas en un evento Open, y en un Módulo aparte la MacroPrincipal:
Como comentaba al principio, el único inconveniente de este método es que,lógicamente, requiere tener abierto el Libro de trabajo.
Si bien habrá que tener presente que para que este método surta su efecto el Libro debe estar abierto!!!.
El método Application.OnTime programa, entonces, la ejecución de un procedimiento a una hora especificada o después del transcurso de un período de tiempo específico.
Veamos un ejemplo, para lo que construiremos un evento Open para activar el método .OnTime e indicar a qué hora queremos ejecutar nuestra macro llamada 'MacroPrincipal'.
Por tanto accederemos al Editor de VBA (alt+F11) e insertaremos en ThisWorkbook el siguiente código:
Private Sub Workbook_Open() Application.OnTime TimeValue("17:30:00"), "MacroPrincipal" End Sub
Adicionalmente en un módulo del Editor de VBA añadiremos las líneas de nuestra macro:
Sub MacroPrincipal() MsgBox "Hola, son las 17:30 y se ha ejecutado la MacroPrincipal" End Sub
Ya sólo nos queda esperar a que la hora de nuestro sistema (de nuestro equipo) llegue a las 17:30:00, en ese instante se ejecutará el procedimiento indicado, en el ejemplo la macro 'MacroPrincipal'... apareciendo el mensaje (MsgBox):
Si en lugar de programar a una hora concreta queremos ejecutar una macro 10 segundos después de la apertura de nuestro Libro, en el editor de VBA en ThisWorkbook incluiríamos las siguientes líneas en un evento Open, y en un Módulo aparte la MacroPrincipal:
Private Sub Workbook_Open() Application.OnTime Now + TimeValue("00:00:10"), "MacroPrincipal" End Sub
Como comentaba al principio, el único inconveniente de este método es que,lógicamente, requiere tener abierto el Libro de trabajo.
Maravilloso, funciona a la perfección, amigo eres genial gracias por compartir.
ResponderEliminarSaludos!!
Un placer!
EliminarSlds cordiales
men mil graciasssss
ResponderEliminarHola ismael buenas tardes...como podria variar el codigo para que despues de abierto el libro, se ejecute la macro todos los dias a la misma hora mientras este abierto.
ResponderEliminarHola Edison,
Eliminarpara repetir, en un libro abierto, una misma macro periódicamente... puedes leer este otro ejemplo
http://excelforo.blogspot.com.es/2014/02/vba-repetir-una-macro-cada-x-tiempo.html
verás que la clave es definir el periodo de repetición...
Espero te sirva.
Saludos