¿Cómo se puede ejecutar algún código de VBA periódicamente, completamente automatizado?¿Cómo hacer una macro que se ejecuta periódicamente en Excel?
Respuesta
Puede utilizar Application.OnTime para programar una macro para ejecutar periódicamente. Por ejemplo, crea un módulo con el siguiente código. Llame a "Habilitar" para iniciar el funcionamiento del temporizador.
Es importante dejar funcionando el temporizador cuando se cierra el libro: para hacerlo manejar Workbook_BeforeClose y llame "Desactivar"
Option Explicit
Private m_dtNextTime As Date
Private m_dtInterval As Date
Public Sub Enable(Interval As Date)
Disable
m_dtInterval = Interval
StartTimer
End Sub
Private Sub StartTimer()
m_dtNextTime = Now + m_dtInterval
Application.OnTime m_dtNextTime, "MacroName"
End Sub
Public Sub MacroName()
On Error GoTo ErrHandler:
' ... do your stuff here
' Start timer again
StartTimer
Exit Sub
ErrHandler:
' Handle errors, restart timer if desired
End Sub
Public Sub Disable()
On Error Resume Next ' Ignore errors
Dim dtZero As Date
If m_dtNextTime <> dtZero Then
' Stop timer if it is running
Application.OnTime m_dtNextTime, "MacroName", , False
m_dtNextTime = dtZero
End If
m_dtInterval = dtZero
End Sub
Alternativamente, puede utilizar la API de Win32 SetTimer/KillTimer funciones de manera similar .
Hay un método de aplicación que puede usarse para sincronizar eventos. Si desea que esto ocurra periódicamente, tendrá que 'recargar' el temporizador después de cada ejecución, pero eso debería ser bastante sencillo.
Sub MyTimer()
Application.Wait Now + TimeValue("00:00:05")
MsgBox ("5 seconds")
End Sub
-Adam
Podría considerar el Programador de tareas de Windows y VBScript.
Hago esto todo el tiempo, solía usar el método "OnTime" como se muestra arriba pero hace que la máquina con la que está ejecutando el código sea inútil para otras cosas, porque Excel está funcionando el 100% del tiempo. En su lugar utilizo un libro de trabajo oculto modificado y ejecuto con Windows Task Scheduler y en la función thisworkbook workbook_open, llamo a la macro de su libro de trabajo personal, o abro y ejecuto otro libro de trabajo con el código en él. Después de que se haya ejecutado el código, puede llamar a la función application.quit del libro de trabajo oculto y cerrar ecxel para la próxima ejecución. Lo uso para todas mis funciones de informes sin supervisión de 15 minutos y diarias.
Tengo que decir que esto ya no es cierto. Estoy ejecutando un Sub periódicamente en este momento (una vez por segundo) y Excel no acapara la CPU en absoluto. – rix0rrr
- 1. Servicio de Windows que se ejecuta periódicamente
- 2. Macro independiente de Excel
- 3. ¿Cómo configurar una prueba unitaria en VBA Excel Macro?
- 4. ¿Cómo hacer una macro que puede tomar una cadena?
- 5. El libro de Excel Open Event macro no siempre se ejecuta
- 6. ¿Cómo hacer macro NSString?
- 7. ¿Cómo llamar macro macro específica de una hoja de un libro de Excel en otro?
- 8. ¿Cómo generar XML desde una macro de Excel VBA?
- 9. webkit_server se cuelga periódicamente cuando se ejecuta desde Capybara en Ruby
- 10. Cómo se puede ejecutar una macro de Excel a través de una tarea de programación
- 11. ¿Cómo puedo usar JavaScript dentro de una macro de Excel?
- 12. cómo enmascarar excel código de macro
- 13. ¿Podemos escribir una macro en C# para Excel
- 14. macro para Ocultar filas en excel 2010
- 15. ¿Combina varias celdas en una en Excel con macro?
- 16. HTML adjunto que contiene javascript no se ejecuta, ¿cómo puedo hacer que se ejecute?
- 17. ¿Cómo evito que Excel represente la hoja de cálculo como lo calcula mi macro?
- 18. Deshacer de edificio en una macro de Excel de VBA
- 19. ¿Cómo hacer una macro Jinja2 desde una vista invocable?
- 20. VBA de Excel: hacer que parte de la cadena negrita
- 21. EXcel VBA: Macro de Excel para crear una tabla en PowerPoint
- 22. Los datos de Bloomberg no se completan hasta que finaliza la macro de Excel VBA
- 23. Excel VBA - Ejecutar macro antes de guardar
- 24. 400 de error de Excel Macro
- 25. ¿Cómo se nombra un hilo que ejecuta una Tarea?
- 26. Preprocesador C Macro que define Macro
- 27. Excel XML, ¿cómo puedo hacer que Excel muestre mi campo DateTime en formato aaa-MM-dd?
- 28. Reiniciar una aplicación Django que se ejecuta en Apache + mod_python
- 29. Cómo hacer una macro variadic (número variable de argumentos)
- 30. Aplicación que se ejecuta en segundo plano
... para automatizar por completo esta buena respuesta, agregue Llamar a MacroName() al evento Workbook_Open(). De esta forma, cada vez que abra xls/xlsm, MacroName iniciará sus características sin intervención del usuario. – jpinto3912
Hmm, me pregunto, ¿cuándo se asigna 'm_dtInterval' (a algo más que dtZero)? – gregseth
¿Por qué es importante detener el temporizador cuando el libro de trabajo está cerrado? ¿Qué pasa si no haces eso? –