DEV Community

Cover image for Como executar diariamente e automaticamente planilhas do Excel com VBA Macro no Windows
Henrique Marques Fernandes
Henrique Marques Fernandes

Posted on • Originally published at marquesfernandes.com on

Como executar diariamente e automaticamente planilhas do Excel com VBA Macro no Windows

Você já precisou rodar diariamente uma planilha do Excel? Recentemente me deparei com esse cenário, e como programador preguiçoso pensei: Não é possível que não de para automatizar isso! Encontrei uma solução relativamente simples e resolvi documentar.

Eu sempre escolho uma pessoa preguiçosa para fazer um trabalho difícil… Porque ela encontrará uma forma fácil de fazê-lo.
Bill Gates

Vou explicar como você pode fazer isso usando o Agendador de Tarefas (Windows Task Scheduler – já vem instalado) para: Abrir; Executar Macros VBA; Salvar; Fechar o Excel. Essa solução permite uma ampla variedade de configurações de agendamento!

PARA O AGENDADOR FUNCIONAR O COMPUTADOR PRECISA ESTAR LIGADO

Pré-requisitos

Todos os pré-requisitos já vem instalados por padrão no Windows:

  • Agendador de Tarefas (Windows Task Scheduler)
  • Bloco de Notas (Ou algum editor de texto neutro)
  • CScript (C:\Windows\System32\cscript.exe)

Criando o arquivo VBS

O arquivo que fará toda a magia acontecer será um script VBS (Visual Basic Script). Caso você esteja familiarizado com VBA não terá dificuldades em entender os comandos do script.

Abra o Bloco de Notas e copie o conteúdo abaixo:

'Caminho completo para a planilha excel 
CaminhoArquivoExcel = "C:\Users\henrique\Documents\nome_da_planilha.xlsm" 

'Escopo e nome completo da macro para executar 
CaminhoMacro = "Module1.NomeDaMacro" 

'Criamos uma instância do excel 
Set ExcelApp = CreateObject("Excel.Application") 

'Você deseja que essa instância fique visível? 
ExcelApp.Visible = True  'or "False" 

'Previne que o Excel mostre alertas
ExcelApp.DisplayAlerts = False 

'Abrimos o arquivo excel 
Set wb = ExcelApp.Workbooks.Open(CaminhoArquivoExcel) 

'Executamos a macro 
ExcelApp.Run CaminhoMacro

'Salvamos o arquivo excel após a execução da macro 
wb.Save 

'Voltamos com o parâmetro de alertas para evitar problemas com outras planilhas 
ExcelApp.DisplayAlerts = True 

'Fechamos o arquivo Excel 
wb.Close 

'Fechamos a instância do Excel 
ExcelApp.Quit 

'Alerta para avisar quando a planilha for executada com sucesso 
MsgBox "Sua planilha foi executada automaticamente com sucesso às:" & TimeValue(Now), vbInformation 

Agora precisamos substituir algumas informações:

  1. Troque o valor da variável CaminhoArquivoExcel para a localização exata do arquivo Excel que você deseja abrir. Importante colocar tanto o nome correto como a extensão.
  2. Troque o valor da variável CaminhoMacro para o valor exato da macro que você deseja rodar.
  3. Em ExcelApp.Visible você pode decidir se quer que a aplicação abra uma instância visível (true) ou que ela execute em segundo plano (false). Alguns add-ins não funcionam em segundo plano.
  4. MsgBox : Alerta com mensagem visível para o usuário caso a macro tenha rodado com sucesso, caso não deseje basta remover essa linha.

Vamos salvar esse arquivo com a extensão .vbs : No Bloco de notas na hora de salvar no campo nome do arquivo digite algo parecido com: excelautomatico.vbs e em tipo de arquivo selecione: Todos os arquivos. De uma boa se todos os caminhos estão corretos e salve esse arquivo em algum lugar seguro onde ninguém possa acidentalmente remover. Anote o caminho do arquivo salvo pois precisaremos para depois!

Criando o agendamento com o Agendador de Tarefas

Para encontrar o programa basta digitar na busca do menu iniciar Agendador de Tarefas.

Para criar uma nova tarefa basta clicar no botão no lado direito: Criar Tarefa…

screenshot-marquesfernandes.com-2019.09.24-16_39_54.png

Criar tarefa – Aba Geral

screenshot-marquesfernandes.com-2019.09.24-16_41_55.png

Na *Aba Geral * você vai preencher o nome do agendamento e sua descrição.

Dica: A descrição é opcional porém uma boa prática para que no futuro você ou outra pessoa consiga entender o que diabos esse agendamento faz. Experiência própria, crie uma descrição objetiva!

Nessa aba podemos definir também se queremos que o agendamento rode quando o usuário não estiver logado no computador, lembrando novamente que para funcionar o computador sempre precisa estar ligado. Vou assumir que você queira executar sempre mesmo com o computador bloqueado: Selecione Executar estando o usuário conectado ou não e digite seu usuário e senha para validar essa opção.

Criar tarefa – Aba Disparadores

Na Aba Disparadores ** configuramos os agendamentos da tarefa, clique no botão **Novo para criar e configurar um novo agendamento. No exemplo abaixo estamos criando uma regra para rodar nosso agendamento todo dia às 16:43 hs:

screenshot-marquesfernandes.com-2019.09.24-16_44_36.png

Você pode criar mais de uma regra para cada agendamento.

Criar tarefa – Aba Ações

Na Aba Ações vamos mapear quais ações deverão ser executadas. Para executar o script criado no começo do tutorial precisamos utilizar um programa nativo do Windows chamado CScript ** que permite executar nosso arquivo **.vbs :

No campo “Programa/script” adicione: “C:\Windows\System32\cscript.exe”

Agora vamos passar como argumento para o CScript ** qual arquivo queremos que ele execute. Cole o caminho completo do arquivo **.vbs que criamos no começo:

No campo “Adicione argumentos (opcional)” troque os valores e adicione algo parecido com: “C:** Users ** henrique ** excelautomatico ***.vbs”*

Ambas configurações devem estar entre aspas.

screenshot-marquesfernandes.com-2019.09.24-16_46_38.png

Criar tarefa – Outras Abas

Algumas configurações adicionais podem ser encontradas nas outras abas, por isso recomendo que você de uma conferida e veja se alguma outra configuração será necessária para o seu caso.

O post Como executar diariamente e automaticamente planilhas do Excel com VBA Macro no Windows apareceu primeiro em Henrique Marques Fernandes.

Top comments (0)