Notifications
Clear all

Automatizar rotina diária

4 Posts
4 Usuários
0 Reactions
1,061 Visualizações
(@genison)
Posts: 0
New Member
Topic starter
 

Olá a todos!

Antes de mais nada quero parabenizar o fórum pelo excelente conteúdo, e pela disposição dos usuários em se ajudarem.

Vamos à minha questão!

Eu manjo pouco do desenvolvimento de macros, mas consigo ler e interpretar a maioria delas, apesar de que nem sempre é fácil.

No meu dia a dia, eu tinha uma rotina básica, segue o passo-a-passo:

1. Abro a planilha.
2. Desabilito fórmulas.
3. Atualizo os dados externos (Banco de Dados)
4. Reativo as fórmulas.
5. Salvo.
5. Copio e Colo valores em todas as - 65 - guias da planilha.
6. Excluo as guias ocultas.
7. Salvo uma cópia no Drive do Google.
8. Fecho.

Consegui macros pra fazer tudo isso em instantes, mas tem um problema em uma delas, manualmente é tranquilo executar os passos de 2 a 4. Eu executo o 2, o 3, aguardo o 3 concluir, e executo o 4, mas com a macro, ele não dá esse time no passo 3, o que prejudica todo o processo. O que eu preciso é de um timer de pelo menos 40 segundos entre o passo 3 e 4, pra só depois disso executar o restante.

Eu tenho uma macro que se chama ExecuteAll, que encontrei aqui, inclusive, e nela eu só faço a chamada das outras macros, pra só clicar num botão e pronto.

Alguém pode me ajudar?

Essa é a macro:

Sub UpdateQuery()
Application.Calculation = xlManual
ActiveWorkbook.RefreshAll
Application.Calculation = xlAutomatic
End Sub
 
Postado : 03/08/2017 10:47 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

genison,

Boa tarde!

Separe os passos em rotinas. Isso facilitará o trabalho de programação e manutenção quando necessário. Depois você cria uma rotina principal que vai chamando cada uma das rotina referentes aos passos citados.

Feito isso, use a função nativa do VBA ON TIME entre a rotina anterior e a próxima (que você quer que seja dado um tempo antes de começar). Com essa função, você dá o tempo que quiser.

    'Aqui é iniciada a chamada ao procedimento "Mensagem" após 1 segundo que a planilha é carregada
    Application.OnTime Now + TimeValue("0:00:1"), "Mensagem"
 
Postado : 03/08/2017 11:06 am
(@carlosrgs)
Posts: 0
New Member
 

Boa tarde Genison.

Se são Macros diferentes "talves" da pra usar esse código.

Sub Teste()
Call Application.OnTime(Now + TimeValue("00:00:03"), "ExecutaMacro")
End Sub
 
Postado : 03/08/2017 11:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Use a pesquisa do fórum!!!

Outra fonte:
https://www.tomasvasquez.com.br/blog/mi ... era-no-vba

Att

 
Postado : 03/08/2017 11:08 am