sql >> Base de Datos >  >> RDS >> Access

CÓMO:Ejecutar tareas programadas con Microsoft Access

¿Alguna vez ha querido ejecutar algún código de acceso en un horario automático?

Le mostraré cómo usar una aplicación de Access existente para ejecutarla y cerrarla correctamente cuando se inicia a través del Programador de tareas y, al mismo tiempo, presenta una interfaz de usuario amigable cuando la inicia un usuario final.

La clave para que funcione es /cmd bandera.

Pasar argumentos de la línea de comandos para acceder

Para pasar un argumento de línea de comando para acceder, usa el /cmd argumento de línea de comando al iniciar su aplicación:

Especifica que lo que sigue en la línea de comando es el valor que devolverá el Comando función. Esta opción debe ser el último interruptor en la línea de comando. Puede usar un punto y coma (;) como alternativa a /cmd .

Use este modificador para especificar un argumento de línea de comandos que se puede usar en el código de Visual Basic para Aplicaciones (VBA)

Para recuperar el texto que pasa en la línea de comando siguiendo el /cmd argumento, usa el VBA.Command función.

Puede usar esta función al inicio para redirigir su código para realizar cualquier tarea recurrente.

Ejemplo Práctico

  1. Crear una nueva base de datos
  2. Agregue el siguiente código a un nuevo módulo estándar:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Crear una nueva macro
  2. Elija "Ejecutar código " del menú desplegable "Agregar nueva acción"
  3. Establecer "Nombre de la función" en Startup()
  4. Cierre y guarde la macro como "AutoExec "

Ejecutar como usuario normal

Para probar la aplicación como un usuario normal, simplemente compacte y repare la base de datos.

Verá un cuadro de mensaje que dice "Iniciar".

Ejecutar como una tarea programada

Para imitar la ejecución como una tarea programada, cierre su base de datos y ejecútela con el siguiente comando:

"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly

Access parpadeará brevemente en la pantalla, luego verá el cuadro de diálogo "Acerca de Windows" y Access se cerrará solo.

Algunas Notas

  • AutoExec es una macro especial que se ejecuta automáticamente al inicio
  • Aunque Startup() la rutina no devuelve ningún valor, la declaramos como una Function porque no podemos llamar directamente a un Sub desde una macro en Access
  • Bajo uso normal, el código de la ventana cmd se omite
  • Llamo explícitamente a Application.Quit dentro de mi bloque "Nightly" para evitar que Access cuelgue del código que requiere la interacción del usuario (como el código MsgBox en mi ejemplo)
  • Siempre llamo a Trim() alrededor del VBA.Command función para evitar errores introducidos por espacios en blanco iniciales o finales en la línea de comando
  • Como alternativa a /cmd , también puedes usar el /x cambie y pásele el nombre de una macro personalizada (No hago eso porque odio las macros con la pasión de miles de soles candentes; las únicas dos macros que uso son Autoexec y Autokeys porque proporcionan una funcionalidad especial )

Una nota final sobre el Programador de tareas y la automatización de otras aplicaciones de oficina

Si su tarea no parece funcionar cuando la configuró para ejecutarse durante la noche, intente cambiar la opción de tarea programada a "Ejecutar solo cuando el usuario haya iniciado sesión".

Las aplicaciones de Office no están diseñadas para ejecutarse en lo que Windows llama modo "no interactivo". Si configura una tarea programada para "Ejecutar tanto si el usuario ha iniciado sesión como si no", esa tarea se ejecutará en modo no interactivo. Esto puede causar una variedad de problemas, especialmente si está automatizando Excel como parte del proceso recurrente.

La solución más sencilla es bloquear la estación de trabajo en lugar de cerrar la sesión y dejar la opción configurada en "Ejecutar solo cuando el usuario haya iniciado sesión".

Eso puede no ser práctico en su situación, pero es una consideración importante a tener en cuenta. Considérese advertido:

Microsoft actualmente no recomienda ni admite la automatización de las aplicaciones de Microsoft Office desde cualquier aplicación o componente cliente no interactivo y desatendido