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. 

5 6 votos
Nota do Artigo
Author

Um nerd nada tradicional… Desenvolvedor web full-stack, escritor amador e inventor nas horas vagas. Apaixonado por tecnologia e entusiasmado por projetos de código aberto!

Subscribe
Notify of
guest
8 Comentários
newest
oldest most voted
Inline Feedbacks
View all comments
Marcos
Marcos
8 dias atrás

Amigo, post de sucesso!. Eu ainda não tentei, mas vou tentar e assim que o fizer, postarei aqui o resultado. Cara, uma pergunta: é possível eu com 42 anos de idade, entrar para o mundo da tecnologia? Digo, fazer sistemas de informação, aprender uma linguagem de programação, etc? Eu sou daqueles que aprendeu um pouco de DOS, word star, windows 95, mas depois não aprofundei. Acabei aprendendo coisas atuais “fuçando” vendo vídeos, etc. Sou louco desde a adolescência a programar. Mas sempre tive medo de iniciar e depois me frustar. Eu queria fazer programas, entender esse mundo por detrás de… Read more »

Eduardo
Eduardo
13 dias atrás

consigo fazer o mesmo processo para o access?

mateus
21 dias atrás

Ferá, não consegui rodar o script fora do agendador de tarefa ocorre um erro.
Alertbox: Erro de compilação do Microsfot vbscript

só funciona se rodar dentro do agendador de tarefa?

Joao Lucas
Joao Lucas
3 meses atrás

Boa tarde

Agradeço esta função.
Fiz como você ensinou, mas nada acontece.

Não sei o que estou a fazer de errado

Muito Obrigado

8
0
Would love your thoughts, please comment.x
()
x