Cómo ejecutar una macro en Access cada n minutos

Tengo una consulta de selección en Access.

Desde el formulario principal de la BBDD hice un botón que ejecuta una macro.

Esa macro lo único que hace es exportar en formato Excel esa consulta de selección, de manera que cada vez que pulso el botón la consulta se ejecuta y se crea y exporta un fichero Excel.

¿Cómo podría hacer para evitar tener que pulsar el botón cada vez y poder hacer que se"pulse solo" cada X minutos? ¿Es decir cómo puedo hacer para que esa macro se ejecute cada X minutos?

1 respuesta

Respuesta
2

Tienes que programar el evento "al cronómetro" del formulario e indicarle el intervalo de tiempo en el que quieres que se ejecute (esto lo puedes hacer por código o en la propiedad del formulario "intervalo de cronómetro").

En el evento "al cronómetro", simplemente has de poner la misma macro que tienes en el botón de exportar

El intervalo lo tienes que indicar en milisegundos, es decir, que si quisieras que la macro se ejecutara cada 5 minutos, tendrías que poner 300000 en el intervalo de cronómetro.

Un saludo.


Gracias por responder tan rápido.

He hecho lo que puedes ver en la imagen adjunta y algo no he debido de hacer bien, ya que ni se ejecuta cada minuto ni siquiera manualmente cuando pulso el botón.

Vale, había entendido mal.

Ya lo he puesto en el formulario y funciona correctamente.

Muchas gracias por la respuesta, pero quiero mejorarlo un poco.

Como el evento es exportar un archivo de Excel, cada vez que se ejecuta me dice que el archivo ya existe en el destino y si quiero reemplazarlo.

Obviamente la respuesta es SÍ.

Cómo puedo hacer para que no me salte la pregunta y reemplace siempre el archivo de destino?

Gracias de nuevo y un saludo,

Solo con macros no creo que puedas hacerlo, a menos que en la propia macro tengas la opción de sobreescribir el archivo (que no creo).
Una solución intermedia (macro -código) sería crear una función pública en VBA que elimine el archivo y añadir a tu macro una nueva acción antes de la exportación que sea la de ejecutar la función (con la acción de macro EjecutarCódigo y le pasas el nombre de la función fncEliminaExcel)
La función podría ser (cambiando la ruta de tu excel):

Public Function fncEliminaExcel() As Boolean
Kill "C:\ArchivoExcel.xlsx"
fncEliminaExcel=True
End Function

La otra opción es programar código en el evento "Al crónometro", por ejemplo:

Private Sub Form_Timer()
Kill "C:\ArchivoExcel.xlsx"
DoCmd.OutputTo acOutputQuery, "NombreConsulta",acFormatXLSX,"C:\ArchivoExcel.xlsx"
End Sub

También podrías usar DoCmd.TransferSpreadsheet en vez de DoCmd.OutputTo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas