Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

Executar Macro Automaticamente

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
GustavoCavagioni
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Sex Abr 12, 2019 8:02 am

Executar Macro Automaticamente

Mensagem por GustavoCavagioni » Sex Abr 12, 2019 9:12 am

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



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


daavmendonca
Acabou de chegar
Acabou de chegar
Mensagens: 6
Registrado em: Sex Abr 12, 2019 4:08 pm

Re: Executar Macro Automaticamente

Mensagem por daavmendonca » Sex Abr 12, 2019 4:46 pm

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....



GustavoCavagioni
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Sex Abr 12, 2019 8:02 am

Re: Executar Macro Automaticamente

Mensagem por GustavoCavagioni » Sáb Abr 13, 2019 1:45 pm

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"
 



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder