Como enviar um email no Outlook com VBA?

Atualizado: agosto de 2021; Aplicável ao Microsoft Outlook 365/2019/2016

Aqui está uma nota que recebemos de um leitor.

Obrigado por sua ajuda muito útil de codificação do Outlook. Gostaria de saber se você pode compartilhar algum código para ajudar a automatizar o envio de um email no Outlook? Eu sei que existem várias maneiras de enviar mensagens recorrentes, mas estou especificamente interessado em usar o VBA para essa tarefa.

Obrigado pela pergunta. O envio automático de e-mails parece estar entre as tarefas mais úteis e populares que você pode automatizar usando o VBA. Continue lendo para obter mais detalhes e um script simples para você começar aqui.

Escrevendo VBA para enviar e-mails do Outlook

No exemplo bastante simples abaixo, abordaremos as seguintes etapas:

  1. Primeiro, usaremos o modelo de objeto VBA Outlook para criar um novo item de email.
  2. Em seguida, vamos definir a importância da mensagem, destinatários (separados por ponto e vírgula) e estilo e conteúdo do corpo do texto.
  3. Em seguida, exibiremos a mensagem em seu aplicativo Microsoft Outlook.
  4. Por último, vamos em frente e enviá-lo para os destinatários.

Aqui está o código VBA simples para criar e enviar emails simples automaticamente. Observe que você deve melhorar facilmente este script para incluir anexos de arquivos, tarefas etc', mas vamos começar com um script muito básico.

Sub SendMail()
Dim MyEmail As MailItem
Set MyEmail = Application.CreateItem(olMailItem)

With MyEmail
.To = ""
.Importance = olImportanceHigh
.Subject = ""
.Body = ""
.BodyFormat = olFormatHTML
.Display
End With

'I purposely commented the next line, uncomment it by removing the "'" sign to send your email.
' MyEmail.Send
End Sub

Atalho de macro do Outlook VBA

Você pode querer associar o código VBA que acabou de escrever com um botão de comando no Outlook. Isso permitirá que você o inicie facilmente a partir de um atalho colocado na Faixa de Opções do Outlook.

Veja como fazer isso:

  1. Primeiro, vá em frente e abra o Microsoft Outlook.
  2. Clique em Arquivo e selecione Opções
  3. Agora vá em frente e selecione Personalizar Faixa de Opções.
  4. Na seção Personalizar Faixa de Opções, você notará a caixa de listagem Escolher Comandos de.
  5. Selecionar macros
  6. Em seguida, selecione seu código VBA recém-criado, no nosso caso o nome deve ser SendMail.
  7. Em seguida, pressione Adicionar e depois OK. Opcionalmente, você pode querer atribuir um ícone à sua Macro.
  8. Sua Macro estará disponível na barra de ferramentas de Acesso Rápido no canto superior esquerdo do seu aplicativo Outlook.

Possíveis problemas com as configurações de macro do VBA

Suas configurações de macro do Outlook podem precisar ser ajustadas para executar macros. Se assim for, aqui está como fazer isso.

Bônus: envie um e-mail do Outlook usando PowerShell

No PowerShell, você pode usar o cmdlet Send-MailMessage para enviar e-mails. No entanto, ele exige autenticação no servidor de e-mail e não é compatível com métodos de autenticação modernos, como OAuth e Microsoft Modern Authentication. Portanto, é muito mais fácil enviar um e-mail se você tiver um perfil do Outlook configurado no seu computador.

Aqui está um exemplo de um script do PowerShell que lê dados de um arquivo do Excel e usa um perfil do Outlook para enviar um e-mail para cada usuário:

# abra o arquivo Excel
$ExcelObj = New-Object -comobject Excel.Application
$ExcelWorkBook = $ExcelObj.Workbooks.Open("C:\PS\user_list.xlsx")
$ExcelWorkSheet = $ExcelWorkBook.Sheets.Item("Planilha1")
# Obtém o número de linhas preenchidas em um arquivo xlsx
$rowcount=$ExcelWorkSheet.UsedRange.Rows.Count
# Percorre todas as linhas da coluna 1, começando pela segunda linha (essas células contêm os nomes de usuário e e-mails).
for($i=2;$i -le $rowcount;$i++){
$useremail = $ExcelWorkSheet.Columns.Item(1).Rows.Item($i).Text
$FullUsername =  $ExcelWorkSheet.Columns.Item(2).Rows.Item($i).Text
$Status =  $ExcelWorkSheet.Columns.Item(4).Rows.Item($i).Text
$pwdchange = $ExcelWorkSheet.Columns.Item(3).Rows.Item($i).Text
# Gera o texto do corpo da mensagem
$strSubj = " Status da sua conta no domínio woshub.com "
$strBody = "Caro " + $Nome de usuário completo
$strBody = $strBody + " `r`n Sua conta no domínio woshub.com está em " + $Status
$strBody = $strBody + "`r`n A data e hora da última alteração de senha é: " +  $pwdchange
$strfile="C:\ps\" + $useremail + ".txt"
# Assumimos que o Outlook está em execução, caso contrário, você precisará iniciá-lo com o comando $outlook = new-object -comobject outlook.application
$outlook = [Runtime.InteropServices.Marshal]::GetActiveObject("Outlook.Application")
$e-mail = $outlook.CreateItem(0)
$email.To = $useremail
$email.Subject = $strSubj
$email.Body =  $strBody
# Anexe um arquivo (se necessário)
$email.Attachments.add($strfile)
#envie a mensagem de e-mail
$email.Send()
}
$ExcelWorkBook.close($true)

script do PowerShell para enviar e-mail do perfil configurado do Outlook

Este script do PowerShell pressupõe que o Outlook esteja em execução no seu computador. O script gera o assunto e o corpo do e-mail para cada endereço SMTP do destinatário no arquivo XLSX e anexa o arquivo. Depois envia o e-mail.


Como criar um modelo de email no Microsoft Outlook.com 365?

Como criar um modelo de email no Microsoft Outlook.com 365?

Saiba como criar um modelo de email no Microsoft Outlook.com 365 para economizar tempo ao redigir mensagens similares.

Como atualizar meu e-mail da caixa de entrada do Outlook quando ele não está sendo atualizado automaticamente?

Como atualizar meu e-mail da caixa de entrada do Outlook quando ele não está sendo atualizado automaticamente?

A caixa de entrada do Outlook não está atualizando automaticamente? Descubra como ajustar as configurações e fazer isso facilmente.

Como duplicar reuniões e eventos em seu calendário do Outlook 2019/365/2016?

Como duplicar reuniões e eventos em seu calendário do Outlook 2019/365/2016?

Saiba como duplicar facilmente eventos, reuniões e compromissos do calendário do Outlook no Office 365, 2016 e 2019.

Parar e remover mensagens de email duplicadas no Outlook 2016 e 2019

Parar e remover mensagens de email duplicadas no Outlook 2016 e 2019

Saiba como parar de receber e remover mensagens de e-mail duplicadas no Outlook 365/2019/2016 em MAC e Windows. Melhore sua produtividade com nossos métodos eficazes.

Como definir calendários, reuniões, eventos e compromissos privados de alta sensibilidade no Outlook 2016/2019/365?

Como definir calendários, reuniões, eventos e compromissos privados de alta sensibilidade no Outlook 2016/2019/365?

Saiba como configurar reuniões privadas nos calendários do Microsoft Outlook 2019 para Windows e MAC, garantindo a privacidade dos seus compromissos.

Como ativar e desativar o verificador ortográfico no Outlook e no Microsoft Word?

Como ativar e desativar o verificador ortográfico no Outlook e no Microsoft Word?

Saiba como habilitar e desabilitar a verificação ortográfica automática no Microsoft Outlook e no Word para melhorar sua escrita.

Formulários do Outlook: Como criar formulários preenchíveis no Microsoft Office 2016/2019?

Formulários do Outlook: Como criar formulários preenchíveis no Microsoft Office 2016/2019?

Saiba como você pode projetar e criar formulários de usuário personalizados do Outlook, incluindo novos recursos e campos.

Como mesclar e remover contatos duplicados no Outlook 365?

Como mesclar e remover contatos duplicados no Outlook 365?

Saiba como limpar sua lista de Contatos no Outlook 365, garantindo uma organização efetiva.

Como modificar a coloração dos marcadores no Word?

Como modificar a coloração dos marcadores no Word?

Neste post, você aprenderá como modificar a cor e o tamanho das listas/pontos com marcadores no Excel, PowerPoint e Word 365/2016/2019.

Como adicionar imagens gif no corpo ou assinatura de email do Outlook 2016/2019?

Como adicionar imagens gif no corpo ou assinatura de email do Outlook 2016/2019?

Saiba como adicionar/incorporar e enviar uma imagem gif ao seu email de saída do Outlook 2016 e 2019.