Notifications
Clear all

Temporizar o envio de e-mail pelo VBA via Microsoft Outlook.

2 Posts
1 Usuários
0 Reactions
730 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

E aí galera, tudo blz...
Mais uma vez preciso de ajuda de todos vocês.
Tenho uma planilha com um código VBA que faz o envio de e-mail via Microsoft Outlook.
Na aba “Dados” estão os dados do e-mail como ‘destinatário’, ‘Assunto’, ‘Texto do Corpo do e-mail’ etc. Observe que o VBA executa enquanto a coluna “A” for diferente de vazio, quando for vazio ele para a execução.
Preciso que os e-mails sejam enviados com um intervalo de X tempo entre um e-mail e outro.
Atualmente, ele executa e envia todos os e-mails na sequência que está na planilha só que sem intervalo entre um e-mail e outro. Quando se tem muitos destinatários (mais de mil) é possível de se ver o Outlook sendo executado, agora, se tem poucos e-mails, ele executa em questão de segundos.
Já utilizei o comando

.DeferredDeliveryTime = DateAdd("n", 10, Now)

'Comando que atrasa o envio do e-mail no Outlook.
'O parâmetro "n" significa minutos, 10 é a quantidade, e Now é a partir de qual data. Nesse caso, Now significa a hora/data atual, como 17:10 20/11/2010.

Que configura um atraso no envio, mas, atrasa o início do disparo do primeiro e-mail, mas quando executa, ele envia todos na sequencia sem dar um intervalo entre os e-mails.
Exemplo: No Excel tenho 100 destinatários, quero configurar para ser enviado um e-mail a cada 1 minuto, então ele irá enviar o primeiro, esperar 1 minuto, envia o segundo, espera mais 1 minuto. E não atrasar o início do envio em 1 minuto e depois que iniciar enviar todos de uma única vez.

Segue a planilha em anexo para que vejam o que ela faz, para que entendam o que preciso.

Abraço.!!!

Danilo.

 
Postado : 27/01/2017 11:22 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde danilobtos,

Tenta utilizar essa linha:

    Application.Wait TimeSerial(hour(now()), minute(now()) + 1, second(now()))

Vai dar um tempo de 1 minuto para que continue rodando o código.

Qualquer coisa da o grito.
Abraço

 
Postado : 27/01/2017 11:49 am