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:
- 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.
- Troque o valor da variável CaminhoMacro para o valor exato da macro que você deseja rodar.
- 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.
- 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…
Criar tarefa – Aba Geral
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:
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.
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)