Access
 sql >> Base de Dados >  >> RDS >> Access

COMO:Executar tarefas agendadas com o Microsoft Access


Alguma vez você já quis executar algum código de acesso em uma programação automática?

Mostrarei como usar um aplicativo existente do Access para executar e sair normalmente quando iniciado por meio do Agendador de Tarefas enquanto ainda apresenta uma interface de usuário amigável quando iniciado por um usuário final.

A chave para fazê-lo funcionar é o /cmd bandeira.

Passando argumentos de linha de comando para acesso


Para passar um argumento de linha de comando para acessar, você usa o /cmd argumento de linha de comando ao iniciar seu aplicativo:
Especifica que o que segue na linha de comando é o valor que será retornado pelo Comando função. Esta opção deve ser a última opção na linha de comando. Você pode usar um ponto e vírgula (;) como alternativa para /cmd .

Use esta opção para especificar um argumento de linha de comando que pode ser usado no código do Visual Basic for Applications (VBA)

Para recuperar o texto que você passa na linha de comando seguindo o /cmd argumento, você usa o VBA.Command função.

Você pode usar essa função na inicialização para redirecionar seu código para executar qualquer que seja a tarefa recorrente.

Exemplo prático

  1. Criar um novo banco de dados
  2. Adicione o seguinte código a um novo módulo padrão:
Public Function Startup()
    
    If Trim(VBA.Command) = "Nightly" Then
        Shell "winver", vbNormalFocus
        Application.Quit
    End If
    MsgBox "Start up"
   
End Function
  1. Criar uma nova macro
  2. Escolha "RunCode " na lista suspensa "Adicionar nova ação"
  3. Defina "Nome da função" como Startup()
  4. Feche e salve a macro como "AutoExec "

Executar como usuário normal


Para testar o aplicativo como um usuário normal, basta compactar e reparar o banco de dados.

Você verá uma caixa de mensagem que diz:"Iniciar".

Executar como uma tarefa agendada


Para simular a execução como uma tarefa agendada, feche seu banco de dados e inicie-o com o seguinte comando:
"C:\Path\To\msaccess.exe" "C:\Path\To\MyDb.accdb" /cmd Nightly

O Access piscará brevemente na tela, então você verá a caixa de diálogo "Sobre o Windows" e o Access fechará sozinho.

Algumas notas

  • AutoExec é uma macro especial que é executada automaticamente na inicialização
  • Mesmo que o Startup() rotina não retorna nenhum valor, nós a declaramos como uma Function porque não podemos chamar diretamente um Sub de uma macro no Access
  • Em uso normal, o código da janela cmd é ignorado
  • Chamo explicitamente Application.Quit dentro do meu bloco "Nightly" para evitar o acesso travado no código que requer interação do usuário (como o código MsgBox no meu exemplo)
  • Sempre chamo Trim() em torno do VBA.Command função para evitar erros introduzidos por espaços em branco iniciais ou finais na linha de comando
  • Como alternativa a /cmd , você também pode usar o /x mudar e passar o nome de uma macro personalizada (não faço isso porque odeio macros com a paixão de mil sóis brancos quentes; as únicas duas macros que uso são Autoexec e Autokeys porque eles fornecem funcionalidades especiais )

Uma nota final sobre o Agendador de tarefas e a automação de outros aplicativos do Office


Se sua tarefa parece não estar funcionando quando você a configura para ser executada durante a noite, tente alternar a opção de tarefa agendada para "Executar somente quando o usuário estiver conectado".

Os aplicativos do Office não devem ser executados no que o Windows chama de modo "não interativo". Se você definir uma tarefa agendada como "Executar se o usuário estiver conectado ou não", essa tarefa será executada no modo não interativo. Isso pode causar vários problemas, especialmente se você estiver automatizando o Excel como parte do processo recorrente.

A solução mais simples é bloquear a estação de trabalho em vez de efetuar logoff e deixar a opção definida como "Executar somente quando o usuário estiver conectado".

Isso pode não ser prático na sua situação, mas é uma consideração importante a ser considerada. Considere-se avisado:
Atualmente, a Microsoft não recomenda e não oferece suporte à automação de aplicativos do Microsoft Office de qualquer aplicativo ou componente cliente autônomo e não interativo