Com frequência é necessário realizar tarefas recorrentes no Excel (como atualizar dados e enviar relatórios). Execuções agendadas de macros podem automatizar estas tarefas.
Pode-se configurar um evento no Excel para executar uma determinada macro em um horário definido com o método Application.OnTime:
No VBAProject em adicione o seguinte código:
Private Sub Workbook_Open()
Application.OnTime TimeValue("18:30:00"), "Alerta"
'O código acima executa a Sub Alerta dentro de um módulo
End Sub
Novamente em VBAProject adicione um Módulo (caso não exista um), e nele acrescente o seguinte código:
Sub Alerta()
MsgBox "Veja como é pontual esta macro"
End Sub
Será necessário salvar a pasta de trabalho e abri-la de novamente (tendo habilitado as macros) para que a subrotina Workbook_Open do exemplo funcione corretamente.
O código de Workbook_Open executará assim que a planilha for aberta, pois trata-se de um código atrelado a um evento.
Lembre-se que caso o arquivo Excel, que contém o código de Workbook_Open, não estiver aberto no horário programado a macro "Alerta" não será executada.
Para que não seja necessário deixar um arquivo Excel aberto podemos realizar a tarefa de agendamento com o Agendador de Tarefas do Windows ().
Para isso é preciso criar um script em Visual Basic (extensão .vbs) que será chamado, por exemplo, via arquivo batch (.bat).
Agendador de Tarefas do Windows $\rightarrow$ ArquivoBat.bat $\rightarrow$ ScriptVB.vbs $\rightarrow$ ExcelComMacro.xlsm
Os nomes ArquivoBat, ScriptVB e ExcelComMacro são apenas exemplos e podem ser customizados.
Lembre-se de habilitar as macros antes de realizar um agendamento.
1. Crie uma pasta de trabalho chamada ExcelComMacro.xlsm que possuí no Módulo1 a seguinte macro:
Sub peloAgendador()
MsgBox "Esta macro está sendo executada por intermédio do agendador"
End Sub
2. Abra o Bloco de Notas do Windows () e digite o código abaixo:
macroVB 'Esta linha chamará a Sub macroVB
Sub macroVB()
Dim caminho
Set objExcel = CreateObject("Excel.Application")
caminho = "C:\...\ExcelComMacro.xlsm" 'Coloque o caminho da sua pasta de trabalho do Excel
Set objWorkbook = objExcel.Workbooks.Open(caminho,0,FALSE)
objExcel.Application.Visible = False
objExcel.Application.Run "'" & caminho & "'" & "!Módulo1.peloAgendador"
objExcel.Application.Quit
Set objExcel = Nothing
End Sub
3. Salve o arquivo com a extensão .vbs
4. Novamente abra o Bloco de notas e insira o código a seguir e o salve como ArquivoBat.bat:
cscript.exe "C:\...\ScriptVB.vbs"
Não esqueça de substituir o caminho do arquivo ScriptVB.vbs no código acima.
Visual Basic é uma programação muito similar a VBA (Visual Basic for Aplications), mas ainda sim elas possuem diferenças.
Feitos os procedimentos anteriores basta agendar a tarefa com Agendador de Tarefas do Windows:
Para testar basta aguardar o horário agendado.
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE