Categorias
Excel

Execução de planilha com macro via CMD

Como executar sua planilha com macros através de um arquivo .bat, automatizando e possibilitando o agendamento (schedule) da tarefa.

Introdução

Fala galera, blz?
Alguns dias atrás, um colega do LinkedIn me pediu ajuda para tentar “automatizar” um processo de atualização de dados numa planilha, onde através de uma tarefa agendada, seria executada uma macro. Por isso, gostaria de compartilhar com vocês uma simples abordagem que utilizo em alguns dos meus trabalhos.

Desenvolvimento

No exemplo que irei demonstrar, utilizaremos três arquivos que disponibilizarei ao fim do post para download. Mas se preferir, por questões de segurança, você mesmo pode cria-los agora junto comigo.

Primeiro, vamos começar criando uma nova pasta para armazenar nossos arquivos.
Eu criei uma pasta chamada “Pasta” na raiz do diretório “C:\”, mas você pode criar onde preferir.

Pasta criada no diretório C:\

Dentro dessa pasta, vamos criar uma planilha que darei o nome de “planilha”.

Arquivo criado

Abra o arquivo, crie um novo módulo no editor de VBA com o código abaixo, e salve o arquivo como “.xlsm”.

Sub Nome_macro()

MsgBox "Oi," & vbCrLf & vbCrLf & "Executei a macro. até mais =)"

End Sub

Caso não saiba como fazer o processo acima, vou explicar abaixo, caso contrário pode pular esta parte.

Para criar um módulo, com a planilha aberta pressione “Alt + F11” para abrir a tela do editor VBA.
No menu a esquerda, clique com o botão direito do mouse, para criar um novo módulo, veja na imagem abaixo:

Criando um novo módulo

Agora cole o código abaixo, na telado módulo selecionado:

Sub Nome_macro()

MsgBox "Oi," & vbCrLf & vbCrLf & "Executei a macro. até mais =)"

End Sub
Tela com o código

Você pode executar o código para testar, ele irá mostrar uma pequena caixa de texto. somente para sabermos mais adiante que a macro foi executada.

Agora, salve a planilha no formato “.xlsm” para armazenar a macro.

O próximo passo, é criar um script VBS que será responsável por:
– Abrir esta planilha;
– Executar a macro que criamos;
– E fechar a planilha.

Para isso, abra o bloco de notas e insira este código abaixo:

Dim objExcel
Dim objWB

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

'CAMINHO DA PLANILHA
Set objWB = objExcel.Workbooks.Open("C:\pasta\planilha.xlsm")

'NOME DA MACRO PARA EXECUTAR
objExcel.Run "Nome_macro"

objWB.Close False
objExcel.Quit

Não esqueça de mudar os dados de acordo com o caminho da sua pasta, o nome da planilha, e o nome da macro que você criou. No meu exemplo, o caminho do meu arquivo é “C:\pasta\planilha.xlsm”, e o nome da minha macro é “Nome_macro”.

Salve o arquivo como “script.vbs”, ou o nome que preferir. Mas atente-se em salvar o arquivo com a extensão “.vbs”.

Salve o arquivo com a extensão .vbs

Agora precisamos criar o arquivo “.bat” que executará o arquivo “.vbs”.
Este arquivo é importante caso queira executar esta tarefa de maneira programada, por exemplo, criar uma rotina no “Agendador de Tarefas” do Windows para que seja executado todos os dias ao meio dia.

Para criar o arquivo, abra o bloco de notas e cole este código abaixo:

C:\pasta\script.vbs

pause

Altere o caminho de acordo com a sua pasta, e o nome do arquivo vbs. E caso queira que ao final do procedimento você precise apertar alguma tecla, deixe a linha com o pause, senão pode apagá-la.

Salve o arquivo com a extensão “.bat”, com o nome que preferir.

Savel o arquivo com a extensão .bat

Nossa processo está completo, a dinâmica funciona assim:

– Nosso arquivo “.bat”, executa o arquivo “.vbs”;
– O arquivo “.vbs”, executa a planilha, em seguida a macro, e aguarda até o final da execução dela;
– Após a execução da macro, o Excel é fechado.

Vídeo com teste

Arquivos prontos: https://drive.google.com/file/d/1ZCarBQPkKzd4XQ4uXXVx2pnz3eLQWzIj/view?usp=sharing

Conclusão

O post ficou um pouco grande e talvez com a explicação confusa. Mais adiante tentarei reformular ou gravar um passo a passo em vídeo pra ficar mais didático.
Mas caso tenho alguma dúvida, mande nos comentários abaixo ou por e-mail.

Espero ter ajudado de alguma forma,
Obrigado pelo seu tempo e fique bem!!! 😁👍

Por erick.nishimoto

Compartilhando dicas e experiências!

2 respostas em “Execução de planilha com macro via CMD”

Olá, amigo!
Excelente post!

Pode me ajudar numa questão? Eu alterei o diretório da pasta, mas por conta da acentuação esbarrei em um erro que não consigo solucionar:

‘CAMINHO DA PLANILHA
Set objWB = objExcel.Workbooks.Open(“C:\Users\Daniel Alves\Desktop\2. Carga Diária\Relatório de Carga Diária.xlsm”)

Erro: Não foi possível encontrar “C:\Users\Daniel Alves\Desktop\2. Carga Diária\Relatório de Carga Diária.xlsm”

No VBS como consigo resolver? Já tentei o CHCP mas não funcionou.

Fala Daniel!
Obrigado pelo feedback, e segue uma sugestão para tratar esse erro:
'CAMINHO DA PLANILHA
Set objWB = objExcel.Workbooks.Open(“C:\Users\Daniel Alves\Desktop\2. Carga Di" & ChrW(225) & "ria\Relat" & Chr(243) & "rio de Carga Di" & ChrW(225) & "ria.xlsm”)

Resumindo, o VBScript não reconhece caracteres especiais, (aliás, uma dica, se possível não utilizar espaços e caracteres especiais em paths(diretórios), mas entendo que nem sempre depende de nós rs), então utilizei a função ChrW, que retorna o caracter de acordo com código informado, no caso para á(225) e ó(243), então meio que “traduzimos” o caracter para execução, e por fim concatenamos essa função com resto do caminho informado.
Depois me conte se deu certo, abraço! ✌

Função ChrW: https://docs.microsoft.com/pt-br/office/vba/language/reference/user-interface-help/chr-function.
Tabelas com os códigos: https://docs.microsoft.com/pt-br/office/vba/language/reference/character-sets

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *