Pesquisar neste blog:

23/12/2021

Código VB no Excel para enviar e-mail com anexo e cópia oculta em massa (envia um e-mail para cada linha do excel com anexos distintos)

Em uma planilha salva como "Pasta de Trabalho Habilitada para Macro do Excel (*.xlsm)" tecle "Alt" + "F11" para abrir o "Microsoft Visual Basic for Applications".

Clique no triângulo verde (ou tecle F5). Digite o nome "enviar_email" e clique em "Criar".


Faça uma adaptação do seguinte código (principalmente as partes em negrito):

Sub enviar_email()
Set objeto_outlook = CreateObject("Outlook.Application")
For linha = 3 To 10
Set Email = objeto_outlook.createitem(0)
Email.display
Email.To = Cells(linha, 12).Value
Email.bcc = "copiaoculta@educacao.sp.gov.br"
Email.Subject = "Assunto do e-mail."
Email.Body = "Corpo do texto - Caro(a) Visitante(a)" & Chr(10) & "Neste exemplo, o PDF que deve ser anexado deverá estar na mesma pasta que contém o arquivo do Excel." & Chr(10) & "Um abraço."
Email.Attachments.Add (ThisWorkbook.Path & "\" & Cells(linha, 11).Value & ".pdf")
Email.send
Next
End Sub

 DICAS ANTES DE ENVIAR:

  1. Recomendo colocar comentários (utilize aspas simples para comentar 'isso é um comentário em VB)  nas linhas "Email.send" e "Email.display" e executar o código (F5) para verificar se todos os anexos estão corretos (anexos devem estar na mesma pasta que o arquivo do excel .xlsm);
  2. Execute o código novamente para alguma linhas "For linha = 3 To 4" e deixe comentado  apenas o "Email.send". Neste ponto verifique se o destinatário,  assunto, corpo do texto e anexos estão corretos;
  3. Remova os comentários  e abra o Outlook com a conta que enviará os e-mails, ou seja, com o "Outlook Aplicativo" aberto, volte na janela do "Microsoft Visual Basic for Applications" e clique em executar (F5).
Alguns comentários sobre o código:
  • ThisWorkbook.Path = caminho onde o arquivo Excel se encontra;
  • Chr(10) = quebra de linha;
  • & = concatena o texto;
  • Cells(x, y).Value = corresponde ao valor que consta na linha x e coluna y da planilha;
  • Email.Attachments.Add(path) = path é o caminho completo do arquivo que será anexo. No exemplo o path foi "ThisWorkbook.Path & "\" & Cells(linha, 11).Value & ".pdf", ou seja, os nomes dos arquivos estão vindo da coluna 11 da planilha e estão na mesma pasta do arquivo do excel.
  • Email.To = Cells(linha, 12).Value = Endereço de e-mail do destinatário. Aqui a variável linha vai de 3 até 10 (loop for) e os e-mails dos destinatários estão na coluna 12;

Para definir o e-mail padrão no Outlook:
  • Clique em "Arquivo".
 
  • Configurações de Conta..

  • Nas abas "Email" e "Arquivos de Dados" selecione o e-mail desejado e depois clique em "Definir como Padrão".




Bom trabalho!!!

2 comentários:

  1. Top top em amigão, facilita e muito o trabalho!!!!

    ResponderExcluir
    Respostas
    1. Obrigado pelo retorno.
      Enviei 290 e-mails com anexos distintos em segundos... Tudo que dá certo eu compartilho aqui.
      Um abraço.

      Excluir

SIGA-NOS