Execução Agendada


Com frequência é necessário realizar tarefas recorrentes no Excel (como atualizar dados e enviar relatórios). Execuções agendadas de macros podem automatizar estas tarefas.


Evento Agendado Excel

Pode-se configurar um evento no Excel para executar uma determinada macro em um horário definido com o método Application.OnTime:

No VBAProject em adicione o seguinte código:

Private Sub Workbook_Open()

    Application.OnTime TimeValue("18:30:00"), "Alerta"
    'O código acima executa a Sub Alerta dentro de um módulo

End Sub

Novamente em VBAProject adicione um Módulo (caso não exista um), e nele acrescente o seguinte código:

Sub Alerta()
    MsgBox "Veja como é pontual esta macro"
End Sub

Será necessário salvar a pasta de trabalho e abri-la de novamente (tendo habilitado as macros) para que a subrotina Workbook_Open do exemplo funcione corretamente.

O código de Workbook_Open executará assim que a planilha for aberta, pois trata-se de um código atrelado a um evento.

Lembre-se que caso o arquivo Excel, que contém o código de Workbook_Open, não estiver aberto no horário programado a macro "Alerta" não será executada.


Evento Agendado no Windows

Para que não seja necessário deixar um arquivo Excel aberto podemos realizar a tarefa de agendamento com o Agendador de Tarefas do Windows ().

Para isso é preciso criar um script em Visual Basic (extensão .vbs) que será chamado, por exemplo, via arquivo batch (.bat).

Agendador de Tarefas do Windows $\rightarrow$ ArquivoBat.bat $\rightarrow$ ScriptVB.vbs $\rightarrow$ ExcelComMacro.xlsm

Os nomes ArquivoBat, ScriptVB e ExcelComMacro são apenas exemplos e podem ser customizados.

Lembre-se de habilitar as macros antes de realizar um agendamento.

1. Crie uma pasta de trabalho chamada ExcelComMacro.xlsm que possuí no Módulo1 a seguinte macro:

    Sub peloAgendador()
        MsgBox "Esta macro está sendo executada por intermédio do agendador"
    End Sub

2. Abra o Bloco de Notas do Windows () e digite o código abaixo:

    macroVB 'Esta linha chamará a Sub macroVB

    Sub macroVB()
        Dim caminho
        Set objExcel = CreateObject("Excel.Application")

        caminho = "C:\...\ExcelComMacro.xlsm" 'Coloque o caminho da sua pasta de trabalho do Excel

        Set objWorkbook = objExcel.Workbooks.Open(caminho,0,FALSE)

        objExcel.Application.Visible = False
        objExcel.Application.Run "'" & caminho & "'" & "!Módulo1.peloAgendador"

        objExcel.Application.Quit

        Set objExcel = Nothing
    End Sub

3. Salve o arquivo com a extensão .vbs

Salvar .vbs

4. Novamente abra o Bloco de notas e insira o código a seguir e o salve como ArquivoBat.bat:

    cscript.exe "C:\...\ScriptVB.vbs"

Não esqueça de substituir o caminho do arquivo ScriptVB.vbs no código acima.

Visual Basic é uma programação muito similar a VBA (Visual Basic for Aplications), mas ainda sim elas possuem diferenças.


Configurando o Agendador de Tarefas do Windows

Feitos os procedimentos anteriores basta agendar a tarefa com Agendador de Tarefas do Windows:

  1. Abra o Agendador de Tarefas do Windows ()
  2. Selecione Criar Tarefa Básica...
  3. Coloque um Nome para tarefa, selecione a periodicidade, escolha Iniciar um programa e coloque o caminho do arquivo ArquivoBat.bat
    Task Scheduler

Para testar basta aguardar o horário agendado.



SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.

Excel ® é uma marca registrada da Microsoft Corporation.

© 2019 SuperExcelVBA | SOBRE

Protected by Copyscape