Agendando a execução de uma macro no VBA

Quando se fala em Macros, VBA e em Excel avançado, muita gente imagina que isso é coisa de outro mundo, mas não é bem assim, existem diversas soluções, que quando seguidas passo a passo, até um iniciante em Excel poderá executá-la, um exemplo disso é fazer um agendamento de macros no VBA, muita gente tem me perguntado sobre, então resolvi escrever este artigo. É fato que quanto maior for o seu conhecimento, mais facilmente você irá realizar as tarefas, mas vamos lá! veja abaixo algumas dicas de como agendar uma macro no VBA:

Existem duas formas interessantes de se agendar a execução de um macro no Excel, na verdade elas se complementam: Utilizando função “application.Ontime” e utilizando o “agendador de tarefas do Windows”

Application.Ontime

Sintaxe:  Application.OnTime([EarliestTime], [Procedure], [LatestTime], [Schedule])

EarliestTime: Aqui tem que informar quando o procedimento será executado

Procedure: Nome do procedimento que será executado

LatestTime: Por quanto tempo o sistema deverá esperar, caso esteja ocupado, para rodando outra função

Schedule: aceita os valores “True” e “False”, onde “True” ativa o agendamento e “False” desativa o agendamento

Para usar esta função, é necessário um mínimo de conhecimento em macro, pois esta função agenda a execução de um macro existente.

Por exemplo, vou agendar, no momento da abertura da planilha, a execução de um macro que salva a planilha atual e a fecha 1 hora depois que foi aberta.

Application.OnTime EarliestTime:=now() + TimeValue(“00:01:00″), Procedure:=”SalvaEFecha”, Schedule:=True

A imagem abaixo exibe como o código foi inserido na função “Open” do “Workbook” que se encontra dentro de “EstaPasta_de_trabalho”

1 - Macro VBA

A função “Ontime” vai chamar o procedimento “SalvaEFecha” 1 hora após a abertura da planilha. Para que a função “On time” saiba qual é o momento da abertura da planilha, usei a função “Now()” para que se  busque o tempo atual e utilizei a função “Timevalue(“00:01:00”) para que se adicione 1 hora ao tempo atual

Abaixo o código da função “SalvaEFecha”:

No exemplo de aplicação acima, inserimos a execução do “Ontime” na abertura da planilha, porém esta função pode ser executada a qualquer momento. Podemos por exemplo fixar um horário para executar um procedimento para enviar um e-mail, salvar um backup, enviar um aviso através de “Msgbox”, abrir um outro documento, etc

A função “Ontime” é inerente ao aplicativo Excel, mas não necessariamente à planilha que executou o “Ontime”.

Por exemplo, abri uma planilha às 09:00hs, que executou a função “Ontime” para enviar um e-mail às 12:00hs. Mas fechei a planilha 10 minutos depois e continuei trabalhando com outra planilha sem fechar o Excel. Quando for 12:00, o aplicativo Excel vai abrir a planilha que eu tinha fechado e vai executar a função de enviar o e-mail

Mas se no exemplo acima eu tivesse fechado o Aplicativo Excel, a função “Ontime” não funcionaria, pois ela não roda se o Excel não estiver aberto.

Agendador de Tarefas do Windows

Como eu tinha mencionado no início deste artigo, o agendador de tarefas do Windows pode ser usado para complementar a deficiência da função “Ontime” de não rodar com o Excel fechado.  Pois posso agendar para uma determinada hora do dia, que o Windows abra uma planilha Excel para que ela rode a função que eu preciso no momento de sua abertura.

Para saber detalhadamente como agendar uma tarefa no Windows clique aqui!

É isso ai pessoal, agora é só aproveitar essas dicas e desenvolver soluções de acordo com as suas necessidades, qualquer dúvida deixe o seu comentário abaixo.