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?

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

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.

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

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

Sua caixa de correio está cheia de entradas de e-mail duplicadas?Saiba como parar de receber e remover mensagens redundantes em caixas de correio do Outlook 365/2019/2016 no MAC e no Windows.

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.

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? Saiba como você pode atualizar automaticamente sua caixa de entrada do Outlook 365/2019/2016/2013 automaticamente.

Impedir que notificações de calendário do Outlook 365/2019/2016 para reuniões e compromissos apareçam

Impedir que notificações de calendário do Outlook 365/2019/2016 para reuniões e compromissos apareçam

Saiba como desabilitar lembretes e notificações dos calendários do Outlook 2016/2019, tanto no Windows quanto no MAC.

Como enviar um email no Outlook com VBA?

Como enviar um email no Outlook com VBA?

Aprenda a escrever macros do Outlook para automatizar o envio de email.

Por que o Outlook está offline ou desconectado e como reconectar?

Por que o Outlook está offline ou desconectado e como reconectar?

Saiba como diagnosticar e solucionar diferentes problemas de desconexão do cliente Microsoft Outlook no Windows 10.

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.

Como tornar o Microsoft Outlook mais rápido (versões 2019 / 365/ 2016)?

Como tornar o Microsoft Outlook mais rápido (versões 2019 / 365/ 2016)?

Saiba como melhorar o desempenho do Outlook.