Página 1 de 1

Executar Macro Automaticamente

Enviado: Sex Abr 12, 2019 9:12 am
por GustavoCavagioni
Pessoal, bom dia!

Esse é meu primeiro post nesse fórum, estou diante de uma situação que eu preciso de uma ajuda.

hoje eu tenho uma macro que executa automaticamente ao abrir, com isso tenho um agendamento de tarefa para realizar a abertura e atualização de madrugada em função do tempo de execução, após a conclusão da atualização o excel fecha e repete a mesma tarefa para outras planilhas.

Porém, durante o dia preciso realizar algumas consultas na planilha, e como está programada para executar a macro ao abrir ela começa a iniciar.

Como alternativa pensei na seguinte solução, ao abrir aparece um MsgBox "deseja Atualizar?" com a validação de sim ou não.
porém se eu fizer isso o agendador de tarefas não vai atualizar automaticamente, pois vai depender dessa validação.

será que é possivel realizar um "AutoSim" no MsgBox depois de alguns segundos? essa acredito que seria a melhor alternativa.

Já tentei fazer uma outra planilha com macro, para chamar a atualização da outra planilha, mas não tive sucesso. E também já tentei fazer uma script para chamar a execução da macro, porém da erro também

Segue abaixo, o código de AutoExec, ele faz a validação para dia de semana, caso positivo chama a macro "AtualizarGeral"

Código: Selecionar todos

Sub auto_Exec()




application.AutomationSecurity = msoAutomationSecurityLow
arquivo = ThisWorkbook.Name

If Weekday(Now()) = 1 Then
Workbooks(arquivo).Close
Exit Sub
Else
If Weekday(Now()) = 7 Then
Workbooks(arquivo).Close
Exit Sub
Else
End If
End If


'==================================================================================

'Onde:

'msoAutomationSecurityLow
'Macros rodam sem verificar o certificado de autenticidade, equivale a segurança Baixa.

'msoAutomationSecurityByUI
'O usuário indica se as macros devem ser habilitadas, equivale a segurança Média.

'msoAutomationSecurityForceDisable
'Desabilita as macros sem certificado de autenticidade, equivale a segurança Alta.

' ==================================================================================


Call AtualizarGeral

End Sub
desde já agradeço pela ajuda :D

Re: Executar Macro Automaticamente

Enviado: Sex Abr 12, 2019 4:46 pm
por daavmendonca
Boa tarde GustavoCavagioni,

Ja pensou em colocar uma condição com base no horario?
se nao estou enganado voce roda essa rotina na madrugada,

Talvez um "IF" no seu caso resolveria, se a execução estiver dentro do horario comercial (Geralmente o horario que você abre a Macro) o Excel desconsidera a rotina e da um "Exit Sub"

Código: Selecionar todos

If Hour(Now()) > 8 And Hour(Now()) < 18 Then
    Exit Sub
Else
    'Rotina Aqui
End If
Espero que te ajude....

Re: Executar Macro Automaticamente

Enviado: Sáb Abr 13, 2019 1:45 pm
por GustavoCavagioni
Cara, muito obrigado pela ajuda !

uma solução tão simples, e eu estava pensando tão longe :lol: :lol: :lol: :lol:


ai fiz uma alteração, no agendador de tarefas eu alterei para semanal e selecionei apenas os dias uteis, dessa forma eu não preciso colocar a parte que trata os dias úteis (código abaixo).

Código: Selecionar todos

If Weekday(Now()) = 1 Then
Workbooks(arquivo).Close
Exit Sub
Else
If Weekday(Now()) = 7 Then
Workbooks(arquivo).Close
Exit Sub
Else
End If
End If
Então ficou da seguinte forma:

Código: Selecionar todos

Sub AutoExec()


application.AutomationSecurity = msoAutomationSecurityLow
arquivo = ThisWorkbook.Name


If Hour(Now()) > 7 And Hour(Now()) < 18 Then
    Exit Sub
Else
    
End If


Call AtualizarGeral



 application.Run "fechar"