Tutorial do Excel – Enviar e-mails a partir do Excel
Normalmente, utilizamos clientes de e-mail como Outlook, Gmail, etc. para enviar e-mails. No entanto, muitas pessoas armazenam dados em workbooks do Excel e precisam compartilhar esses dados enquanto trabalham. Por isso, é útil enviar e-mails diretamente do workbook do Excel, economizando tempo ao evitar o uso do cliente de e-mail. Este tutorial passo a passo mostra como enviar e-mails a partir do Excel em diferentes situações.
Observação: Antes de aplicar os métodos a seguir, é necessário configurar um cliente de e-mail Outlook em seu computador e defini-lo como seu cliente de e-mail padrão.
Índice: [ Ocultar ]
1. O básico sobre envio de e-mails a partir do Excel
Esta seção apresenta os conceitos básicos sobre envio de e-mails a partir do Excel.
1.1 Enviar e-mails do Excel com funções nativas do Excel
Se você deseja apenas enviar e-mails simples a partir do Excel, incluindo apenas os campos Para, Assunto, Cc e corpo, as funções nativas do Excel podem ajudar.
1.1.1 Enviar e-mail do Excel utilizando uma fórmula
Como mostrado na tabela abaixo, para enviar diferentes e-mails do Excel com base nos campos fornecidos, você pode usar referências de células desses campos para criar diferentes fórmulas de Hiperlink. Após criar os hiperlinks de e-mail, basta clicar no hiperlink desejado para que o e-mail seja criado automaticamente.
Observação: Se houver mais de um destinatário nos campos Para ou Cc, separe-os com ponto e vírgula.
Esta seção está dividida em quatro partes para mostrar os passos de como adicionar endereço de e-mail, destinatário(s) em Cc, linha de assunto e corpo do texto separadamente à fórmula de Hiperlink. Siga as instruções abaixo.
A sintaxe e os argumentos da função "HYPERLINK" são os seguintes.
Sintaxe
HYPERLINK(link_location, [friendly_name])
Argumentos
1.1.1.1 Adicionar endereço de e-mail à fórmula de Hiperlink
Aqui usamos "mailto:" como parte da fórmula para adicionar um destinatário de e-mail. Neste exemplo, o endereço do primeiro destinatário está na célula B2, então precisamos adicionar "mailto:" e referenciar a célula B2.
“mailto:”&B2
1. Selecione uma célula para exibir o hiperlink. Neste caso, selecionei a célula F2.
2. Em seguida, insira a fórmula abaixo na célula.
=HYPERLINK("mailto:"&B2)
Observação: Ao pressionar a tecla "Enter", um hiperlink será criado conforme mostrado na imagem abaixo. Ao clicar no link, um e-mail do Outlook será criado e o endereço do destinatário será preenchido automaticamente no campo Para.
O endereço de e-mail do destinatário agora foi adicionado à fórmula de Hiperlink. Continue com os próximos passos para adicionar a linha de assunto, destinatário(s) em Cc e corpo do texto conforme necessário.
1.1.1.2 Adicionar destinatário(s) em Cc à fórmula de Hiperlink
Para adicionar destinatário(s) em Cc à função Hiperlink, adicione "?cc=" como parte da fórmula, conforme exemplo abaixo.
A fórmula na célula F2 deve ser a seguinte:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2)
1.1.1.3 Adicionar linha de assunto à fórmula de Hiperlink
Para adicionar a linha de assunto à função Hiperlink, adicione "&subject=" como parte da fórmula, conforme exemplo abaixo.
A fórmula na célula F2 agora deve ficar assim:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)
1.1.1.4 Adicionar texto do corpo com quebras de linha à fórmula de Hiperlink
O último passo é adicionar o corpo do texto à fórmula de Hiperlink. No exemplo, duas linhas de texto em E2 estão separadas por uma quebra de linha, e você deseja manter essa quebra no corpo do e-mail. O Outlook reconhece a quebra de linha nesse caso? Vamos conferir.
Para adicionar o corpo do texto à fórmula de Hiperlink, adicione “&body=" como parte da fórmula, conforme exemplo abaixo.
A fórmula na célula F2 agora é exibida assim:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)
Observação: Se você pressionar a tecla "Enter" e clicar no link, verá que o conteúdo do corpo do e-mail aparece em uma única linha.
Para exibir o corpo do e-mail em linhas separadas, é necessário modificar o conteúdo da célula adicionando o código de caractere de retorno de carro "%0A" no texto onde deseja inserir a quebra de linha. Veja a imagem:
1.1.1.5 Especificar o texto a ser exibido para o hiperlink
Nos passos acima, finalizamos o argumento Link_location com os campos do e-mail. Nesta seção, vamos finalizar o próximo argumento [friendly_name].
Neste caso, quero que a célula do hiperlink exiba o texto “E-mail para xx”, onde xx é o nome do destinatário em A2. Assim, a fórmula em F2 deve ser alterada para:
=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2, "Email to "&A2)
Pressione a tecla "Enter" para obter o resultado.
Selecione esta célula com a fórmula e arraste a "Alça de Preenchimento Automático" para baixo para criar outros hiperlinks de e-mail. Veja a imagem:
1.1.2 Enviar e-mail do Excel com a função Hiperlink
Além de usar a fórmula de Hiperlink acima, você pode criar manualmente um hiperlink de e-mail com a função "Inserir Hiperlink" no Excel. Veja os passos a seguir.
1. Clique com o botão direito no e-mail onde deseja inserir um hiperlink e selecione "Vincular" no menu de contexto.
2. Na caixa de diálogo "Inserir Hiperlink" que aparece, configure conforme abaixo.

Ao clicar no hiperlink, um e-mail do Outlook será criado com os campos Para, Assunto e Corpo preenchidos conforme mostrado na imagem abaixo.
Observações:
1.2 Enviar e-mail para múltiplos destinatários em células com script VBA
No exemplo acima, é possível ver vários endereços de e-mail em uma célula, separados por ponto e vírgula. Se você tiver uma lista de endereços de e-mail como mostrado na imagem abaixo e quiser enviar um e-mail ou e-mails individuais para todos, o código VBA a seguir pode ajudar.
1.2.1 Enviar um e-mail para múltiplos destinatários em células com script VBA
1. Na planilha que contém todos os endereços de e-mail para os quais deseja enviar o e-mail, pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Na janela "Microsoft Visual Basic for Applications", clique em "Inserir" > "Módulo" e cole o código abaixo na janela "Módulo (Código)".
Código VBA: Enviar e-mail para uma lista de endereços de e-mail
Sub sendmultiple()
'updateby Extendoffice 20220802
Dim xOTApp As Object
Dim xMItem As Object
Dim xCell As Range
Dim xRg As Range
Dim xEmailAddr As String
Dim xTxt As String
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list:", "Kutools for Excel", xTxt, , , , , 8)
If xRg Is Nothing Then Exit Sub
Set xOTApp = CreateObject("Outlook.Application")
For Each xCell In xRg
If xCell.Value Like "*@*" Then
If xEmailAddr = "" Then
xEmailAddr = xCell.Value
Else
xEmailAddr = xEmailAddr & ";" & xCell.Value
End If
End If
Next
Set xMItem = xOTApp.CreateItem(0)
With xMItem
.To = xEmailAddr
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
End With
End Sub
3. Pressione a tecla "F5" para executar o código e uma caixa de diálogo "Kutools para Excel" será exibida. Selecione a lista de endereços de e-mail e clique em "OK".
Observações:
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Após executar o código, todos os endereços de e-mail no intervalo selecionado serão exibidos no campo Para da janela de mensagem. Veja a imagem:
1.2.2 Enviar e-mails separadamente para cada destinatário listado em células com script VBA
O código acima adiciona todos os endereços de e-mail do intervalo selecionado ao campo Para da janela de mensagem. Se você quiser enviar e-mails separadamente para cada endereço listado nas células, sem que os destinatários vejam os endereços uns dos outros, utilize o script VBA a seguir.
1. Na planilha que contém todos os endereços de e-mail para os quais deseja enviar os e-mails, pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Na janela "Microsoft Visual Basic for Applications", clique em "Inserir" > "Módulo" e cole o código abaixo na janela "Módulo (Código)".
Código VBA: Enviar e-mails separadamente para cada endereço listado em células
Sub SendEmailToAddressInCells()
'Updated by Extendoffice 20220802
Dim xRg As Range
Dim xRgEach As Range
Dim xRgVal As String
Dim xAddress As String
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
On Error Resume Next
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select the addresses list", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xRg = xRg.SpecialCells(xlCellTypeConstants, xlTextValues)
For Each xRgEach In xRg
xRgVal = xRgEach.Value
If xRgVal Like "?*@?*.?*" Then
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.To = xRgVal
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
.Display
'.Send
End With
End If
Next
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
3. Em seguida, clique em "Ferramentas" > "Referências". Na caixa de diálogo "Referências – VBAProject", localize e marque a opção "Microsoft Outlook16.0 Object Library" e clique em "OK" para salvar as alterações.
4. Pressione a tecla "F5" para executar o código e uma caixa de diálogo "Kutools para Excel" será exibida. Selecione a lista de endereços de e-mail e clique em "OK".
Observações:
.Subject = "Test"
.Body = "Dear " _
& vbNewLine & vbNewLine & _
"This is a test email " & _
"sending in Excel"
Neste exemplo, há seis endereços de e-mail no intervalo selecionado, portanto, seis janelas de mensagem do Outlook serão criadas automaticamente, cada uma com um endereço de e-mail diferente no campo Para, conforme mostrado na imagem abaixo.
5. Por fim, clique no botão "Enviar" para enviar os e-mails um a um.
2. Inserir anexos ou assinatura do Outlook nos e-mails enviados do Excel (com scripts VBA)
Esta seção mostra como inserir anexos ou a assinatura padrão do Outlook nos e-mails enviados do Excel.
2.1 Inserir anexos nos e-mails enviados do Excel
Aqui descrevemos diferentes situações para inserir anexos, e você pode escolher o método conforme sua necessidade. Nesta seção, você pode aprender (clique em qualquer link abaixo para ir ao método correspondente):
2.1.1 Enviar um arquivo específico como anexo por e-mail
Você pode aplicar o código VBA abaixo para enviar um ou mais arquivos de uma pasta como anexos a partir do Excel.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar arquivos de uma pasta como anexos a partir do Excel
Sub EmailWithAttachments()
'Updated by Extendoffice 20220802
Dim xStrFile As String
Dim xFilePath As String
Dim xFileDlg As FileDialog
Dim xFileDlgItem As Variant
Dim xOutApp As Outlook.Application
Dim xMailOut As Outlook.MailItem
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
Set xFileDlg = Application.FileDialog(msoFileDialogFilePicker)
If xFileDlg.Show = -1 Then
With xMailOut
.BodyFormat = olFormatRichText
.To = "xxx@aaa.com"
.Subject = "test"
.HTMLBody = "test"
For Each xFileDlgItem In xFileDlg.SelectedItems
.Attachments.Add xFileDlgItem
Next xFileDlgItem
.Display
End With
End If
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Observações:
3. Em seguida, clique em "Ferramentas" > "Referências". Na caixa de diálogo "Referências – VBAProject", localize e marque a opção "Microsoft Outlook16.0 Object Library" e clique em "OK" para salvar as alterações.
4. Pressione a tecla "F5" para executar o código. Uma janela "Procurar" será exibida; selecione os arquivos que deseja anexar ao e-mail e clique em "OK".
Em seguida, uma janela de mensagem será exibida. Os arquivos selecionados aparecerão como anexos no campo Anexos.
2.1.2 Enviar a planilha atual como anexo por e-mail
Se você deseja enviar a planilha atual como anexo a partir do Excel, pode aplicar o script VBA desta seção.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar a planilha atual como anexo por e-mail
Sub SendWorkSheet()
'Update by Extendoffice 20220802
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte features"
.Body = "Please check and read this document."
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Observações:
3. Pressione a tecla "F5" para executar o código. A planilha atual será salva como um workbook do Excel e inserida automaticamente em uma janela de mensagem como anexo. Veja a imagem:
Observação: O workbook anexado, que contém apenas a planilha atual, terá o mesmo nome do workbook original. O horário em que o código foi executado também será adicionado ao nome do arquivo.
2.1.3 Enviar o workbook atual como anexo por e-mail
Após aprender o código VBA para enviar a planilha atual como anexo, aqui fornecemos outro script VBA para ajudar a enviar todo o workbook como anexo. Siga os passos abaixo.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar o workbook atual como anexo por e-mail a partir do Excel
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Observações:
3. Pressione a tecla "F5" para executar o código. O workbook atual será inserido automaticamente na janela de mensagem como anexo. Veja a imagem:
2.1.4 Enviar todo o workbook como anexo em PDF
Para a maioria das pessoas, é comum salvar um workbook do Excel como arquivo PDF e depois enviá-lo como anexo. Nesta seção, mostraremos como enviar e-mails diretamente do Excel com o workbook aberto como anexo em PDF, sem precisar salvar manualmente o arquivo.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar todo o workbook como anexo em PDF
Sub SendWorkBookAsPDF()
'Update 20220803
Dim Wb As Workbook
Dim FilePath As String
Dim FileName As String
Dim xOutApp As Object
Dim xOutMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf"
FilePath = Environ$("temp") & "\" & FileName
Wb.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
FilePath, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FilePath
.Display 'or use .Send
End With
Kill FilePath
Set xOutMail = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
Observações:
3. Pressione a tecla "F5" para executar o código. O workbook atual será inserido automaticamente em uma nova janela de mensagem como anexo em PDF. Veja a imagem:
2.1.5 Enviar a planilha atual como anexo em PDF
Por exemplo, há um workbook chamado “Vendas mensais” e você finalizou uma tabela de relatório de vendas em uma planilha chamada “relatório de vendas” e deseja enviar essa planilha como arquivo PDF para seus colegas. O código VBA a seguir pode ajudar.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar a planilha atual como anexo em PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
Observações:
3. Pressione a tecla "F5" para executar o código. A planilha atual será inserida automaticamente em uma nova janela de mensagem como anexo em PDF. Veja a imagem:
2.2 Inserir assinatura do Outlook nos e-mails enviados do Excel
Usando o exemplo acima, você aplicou o código VBA para enviar a planilha atual como anexo em PDF a partir do Excel, mas a assinatura do Outlook não foi adicionada à janela de mensagem. Para manter a assinatura padrão do Outlook no e-mail enviado do Excel, utilize o método a seguir.
Dois códigos VBA estão listados abaixo.
Código VBA1: O código ajuda a manter a assinatura do Outlook.
Código VBA2: O código envia a planilha atual como anexo em PDF.
Código VBA1: Manter assinatura do Outlook
.HTMLBody = "Email body" & "
" & .HTMLBody
Código VBA2: Enviar a planilha atual como anexo em PDF
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.Body = "test"
.Attachments.Add FileName
.Display
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
1. Normalmente, pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Na janela "Microsoft Visual Basic for Applications", clique em "Inserir" > "Módulo". Em seguida, cole o código VBA2 acima na janela "Módulo (Código)".
3. Para manter a assinatura padrão do Outlook no e-mail enviado do Excel, modifique o código VBA2 conforme abaixo:
Veja o código completo após a modificação.
Sub SendWorkSheetToPDF()
'Update by Extendoffice 20220803
Dim Wb As Workbook
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Set Wb = Application.ActiveWorkbook
FileName = Wb.FullName
xIndex = VBA.InStrRev(FileName, ".")
If xIndex > 1 Then FileName = VBA.Left(FileName, xIndex - 1)
FileName = FileName & "_" + ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FileName
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "test"
.HTMLBody = "Email body" & "
" & .HTMLBody
.Attachments.Add FileName
'.Send
End With
Kill FileName
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
4. Pressione a tecla "F5" para executar o código. Assim, você terá uma nova janela de mensagem com a planilha atual anexada como PDF, e a assinatura padrão do Outlook será inserida automaticamente ao final do corpo do e-mail.
3. Enviar e-mails automaticamente do Excel quando uma condição for atendida (com scripts VBA)
Nos exemplos acima, é necessário executar o código manualmente para enviar o e-mail. Se você deseja acionar o código automaticamente quando uma condição for atendida, como quando uma célula atinge determinado valor, quando o valor de uma célula é alterado, quando uma data é atingida, etc., o e-mail será enviado automaticamente. Esta seção lista as condições mais pesquisadas por usuários do Excel no Google para ajudar você a enviar e-mails automaticamente do Excel quando uma condição for atendida.
3.1 Enviar e-mail automaticamente quando uma célula atingir um determinado valor
Como mostrado na imagem abaixo, suponha que você tenha uma tabela de vendas com o total de vendas na célula D6. Você deseja enviar um e-mail automaticamente para seu chefe com base no total de vendas, por exemplo, criar ou enviar um e-mail automaticamente quando o total de vendas ultrapassar10.000, mas se o total for igual ou menor que10.000, nenhuma ação será tomada.
1. Na planilha que contém a tabela de vendas, clique com o botão direito na guia da planilha e selecione "Visualizar código" no menu de contexto.
2. Na janela "Microsoft Visual Basic for Applications" que abrir, cole o código VBA abaixo na janela "Planilha (Código)".
Código VBA: Enviar e-mail automaticamente quando uma célula atingir determinado valor no Excel
Dim xRg As Range
'Update by Extendoffice 20200803
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count > 1 Then Exit Sub
Set xRg = Intersect(Range("D6"), Target)
If xRg Is Nothing Then Exit Sub
If IsNumeric(Target.Value) And Target.Value > 10000 Then
Call Mail_small_Text_Outlook
End If
End Sub
Sub Mail_small_Text_Outlook()
Dim xOutApp As Object
Dim xOutMail As Object
Dim xMailBody As String
Set xOutApp = CreateObject("Outlook.Application")
Set xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
On Error Resume Next
With xOutMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "test"
.Body = xMailBody
.Display 'or use .Send
End With
On Error GoTo 0
Set xOutMail = Nothing
Set xOutApp = Nothing
End Sub
Private Sub Worksheet_Calculate()
Dim xI As Integer
Dim xRg As Range
Set xRg = Range("D6")
On Error GoTo Err01
xI = Int(xRg.Value)
If xI > 10000 Then
Call Mail_small_Text_Outlook
End If
Err01:
End Sub
Observações:
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
A partir de agora, quando o valor da célula D6 ultrapassar10.000, um e-mail será criado conforme mostrado na imagem abaixo.
3.2 Enviar e-mail automaticamente quando o valor de uma célula for alterado
Como mostrado na imagem abaixo, suponha que você receba um workbook que contém vendas mensais em diferentes planilhas e o total de vendas em uma planilha. Você precisa verificar o total de vendas e, se ele for modificado, enviar o workbook de volta ao remetente e informá-lo sobre a alteração.
1. Na planilha que contém a tabela de vendas, clique com o botão direito na guia da planilha e selecione "Visualizar código" no menu de contexto.
2. Na janela "Microsoft Visual Basic for Applications" que abrir, cole o código VBA abaixo na janela "Planilha (Código)".
Código VBA: Enviar e-mail automaticamente quando o valor de uma célula específica for alterado
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220803
Dim xRgSel As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xMailBody As String
Dim xBoolean As Boolean
Dim xItsRG As Range
Dim xDDs As Range
Dim xDs As Range
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
xBoolean = False
Set xRg = Range("B14")
Set xItsRG = Intersect(Target, xRg)
Set xDDs = Intersect(Target.DirectDependents, xRg)
Set xDs = Intersect(Target.Dependents, xRg)
If Not (xItsRG Is Nothing) Then
Set xRgSel = xItsRG
xBoolean = True
ElseIf Not (xDDs Is Nothing) Then
Set xRgSel = xDDs
xBoolean = True
ElseIf Not (xDs Is Nothing) Then
Set xRgSel = xDs
xBoolean = True
End If
ActiveWorkbook.Save
If xBoolean Then
Debug.Print xRgSel.Address
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xMailBody = "The cell " & xRgSel.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Worksheet modified"
.Body = xMailBody
.Attachments.Add (ThisWorkbook.FullName)
.Display
End With
Set xRgSel = Nothing
Set xOutApp = Nothing
Set xMailItem = Nothing
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Observação: No código,
A partir de agora, quando o valor da célula B14 for alterado, uma mensagem do Outlook será criada automaticamente conforme mostrado na imagem abaixo.
3.3 Enviar e-mail automaticamente ao salvar o workbook
Se você tem um workbook que precisa ser compartilhado após alterações, normalmente é necessário salvar o arquivo, abrir o cliente de e-mail, criar um novo e-mail com o arquivo anexado, preencher os campos e enviar. Esta seção mostra como criar um e-mail automaticamente toda vez que o workbook for salvo. Siga os passos abaixo.
1. Pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Nesta janela, clique duas vezes em "ThisWorkbook" no painel "Projeto" e cole o código VBA abaixo na janela "ThisWorkbook (Código)".
Código VBA: Enviar e-mail automaticamente ao salvar o workbook
Private Sub Workbook_AfterSave(ByVal Success As Boolean)
'Updated by Extendoffice 20220804
Dim xOutApp As Object
Dim xMailItem As Object
Dim xName As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailItem = xOutApp.CreateItem(0)
xName = ActiveWorkbook.FullName
With xMailItem
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "The workbook has been updated"
.Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
.Attachments.Add xName
.Display
'.send
End With
Set xMailItem = Nothing
Set xOutApp = Nothing
End Sub
Observação: No código,
A partir de agora, ao salvar o workbook pressionando "Ctrl" + "S" ou clicando no botão "Salvar", um e-mail do Outlook será criado automaticamente. O workbook atual será anexado e os campos serão preenchidos conforme especificado. Veja a imagem:
Dica: Se você usa este workbook com frequência, recomendamos salvá-lo como "Pasta de Trabalho Habilitada para Macro do Excel" para manter o script VBA para uso futuro. Veja os passos abaixo.
3.4 Enviar e-mail automaticamente em um horário específico
Suponha que você precise enviar um e-mail com um workbook de tarefas para alguém "toda sexta-feira de manhã às9h", e deseja fazer isso automaticamente no Excel sem operar manualmente o cliente de e-mail. Esta seção mostra como realizar essa tarefa.
1. Pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Na janela "Microsoft Visual Basic for Applications", clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela do Módulo.
Código VBA1: Enviar o workbook atual como anexo por e-mail a partir do Excel
Sub Timer()
If Weekday(Date) = vbFriday Then
SendWorkBook
Application.OnTime TimeValue("09:00:00"), "Timer"
Else
Application.OnTime TimeValue("09:00:00"), "Timer"
End If
End Sub
Sub SendWorkBook()
'Update by Extendoffice 20220802
Dim OutlookApp As Object
Dim OutlookMail As Object
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
On Error Resume Next
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. Nesta janela, clique duas vezes em "ThisWorkbook" no painel "Projeto" e cole o código VBA abaixo na janela "ThisWorkbook (Código)".
Código VBA2: Enviar e-mail automaticamente em um horário específico
Private Sub Workbook_Open()
Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub
Observações:
4. Salve os códigos e depois salve o workbook como uma pasta de trabalho habilitada para macro do Excel, conforme abaixo.
5. Abra o workbook habilitado para macro salvo; então um e-mail será criado ou enviado automaticamente quando o dia e o horário chegarem.
4. Tópicos adicionais
Esta seção reúne outros tópicos que você pode encontrar ao enviar e-mails a partir do Excel.
4.1 Enviar por e-mail um intervalo de células do Excel (com script VBA)
Suponha que haja uma tabela de vendas mensais em uma planilha do Excel, como mostrado na imagem abaixo, e você precise enviar essa tabela para outras pessoas como conteúdo do corpo do e-mail ou como anexo. Aqui fornecemos dois métodos para realizar essa tarefa.
4.1.1 Enviar um intervalo como parte do conteúdo do corpo do e-mail a partir do Excel
Você pode executar o código VBA abaixo para enviar um intervalo de células como parte do conteúdo do corpo do e-mail a partir do Excel
1. Pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications".
2. Na janela "Microsoft Visual Basic for Applications", clique em "Ferramentas" > "Referências". Em seguida, marque a opção "Microsoft Outlook16.0 Object Library" e clique em "OK" na caixa de diálogo "Referências – VBAProject".
3. Clique em "Inserir" > "Módulo" e cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar um intervalo de células como parte do conteúdo do corpo do e-mail a partir do Excel
Sub SendARangeofCells()
'Updated by Extendoffice 20220809
Dim xRg As Range
Dim I, J As Long
Dim xAddress As String
Dim xMailOut As Object
Dim xOutApp As Object
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
xAddress = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox("Please select range you need to paste into email body", "KuTools For Excel", xAddress, , , , , 8)
If xRg Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Set xOutApp = CreateObject("Outlook.Application")
Set xMailOut = xOutApp.CreateItem(olMailItem)
With xMailOut
.Subject = "test"
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = RangetoHTML(xRg)
.Display
'.Send
End With
Set xMailOut = Nothing
Set xOutApp = Nothing
Application.ScreenUpdating = True
End Sub
' The following VBA script is cited from this page:
' https://stackoverflow.com/questions/18663127/paste-excel-range-in-outlook
Function RangetoHTML(rng As Range)
' By Ron de Bruin.
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error Resume Next
.DrawingObjects.Visible = True
.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read all data from the htm file into RangetoHTML
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
Observação: No código,
4. Pressione a tecla "F5" para executar o código. Na caixa de diálogo "Kutools para Excel" que aparecer, selecione o intervalo de células que deseja enviar como parte do corpo do e-mail e clique em "OK". Veja a imagem:
Em seguida, um e-mail do Outlook será criado automaticamente. O intervalo selecionado na planilha será inserido no corpo do e-mail. Veja a imagem:
4.1.2 Enviar um intervalo como anexo do Excel por e-mail
Se você precisa enviar um intervalo de células de uma planilha como anexo a partir do Excel, utilize o código VBA abaixo.
1. Pressione as teclas "Alt" + "F11".
2. Na janela "Microsoft Visual Basic for Applications" que abrir, clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar um intervalo como anexo do Excel por e-mail
Sub SendRange()
'Update 20220809
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email address"
.BCC = "Email address"
.Subject = "Monthly sales for 2021"
.Body = "Hello, please check and read this document. "
.Attachments.Add Wb2.FullName
.Display
'.Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Observações:
3. Pressione a tecla "F5" para executar o código. Na caixa de diálogo "Kutools para Excel" que aparecer, selecione o intervalo de células que deseja enviar como anexo no e-mail e clique em "OK". Veja a imagem:
Em seguida, um e-mail do Outlook será criado automaticamente. O intervalo de células selecionado na planilha será salvo como um workbook do Excel e anexado na janela de mensagem. Veja a imagem:
4.2 Enviar e-mails ao clicar em um botão no Excel
Se você deseja clicar em um botão de comando para acionar uma macro e enviar um e-mail a partir do Excel, por exemplo, enviar o workbook atual como anexo ao clicar em um botão na planilha, siga os passos abaixo para realizar essa tarefa.
1. Clique em "Desenvolvedor" > "Inserir" > "Botão de Comando (Controle ActiveX)". Em seguida, desenhe um botão de comando na planilha.
Dica: Se você já possui um botão de comando, pule esta etapa.
2. Pressione as teclas "Alt" + "F11" para abrir a janela "Microsoft Visual Basic for Applications". Na janela, clique em "Inserir" > "Módulo" e cole o código VBA (o código usado para enviar o workbook atual como anexo a partir do Excel) na janela "Módulo (Código)".
Clique aqui para obter o código.
Observação: O nome da macro criada na etapa2 é "SendWorkbook".
3. Pressione as teclas "Alt" + "Q" para fechar a janela "Microsoft Visual Basic for Applications".
4. Agora é necessário atribuir a macro ao botão de comando. Clique com o botão direito no botão de comando e selecione "Visualizar código" no menu de contexto.
5. Em seguida, a janela "Microsoft Visual Basic for Applications" será exibida e você verá as duas linhas abaixo na janela "Planilha (Código)".
Private Sub CommandButton1_Click()
End Sub
6. Digite o nome da macro existente dentro do procedimento para o botão de comando.
7. Pressione as teclas "Alt" + "Q" para fechar o "Editor do Visual Basic" e clique em "Desenvolvedor" > "Modo de Design" para desativar o modo de design.
Agora você pode clicar no botão de comando para enviar um e-mail com o workbook atual como anexo.
4.3 Enviar e-mails de uma conta de e-mail específica
Normalmente, ao enviar um e-mail do Excel com código VBA, a conta de e-mail do remetente é a conta padrão do Outlook. Suponha que você tenha várias contas configuradas no Outlook e queira usar uma conta específica para enviar os e-mails do Excel, em vez da conta padrão. O código VBA a seguir pode ajudar.
Os códigos abaixo são necessários neste caso.
Código VBA1:
Dim OutlookMail As Outlook.MailItem
Código VBA2:
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
Como usar os códigos VBA acima?
Neste exemplo, vamos especificar uma conta de e-mail para enviar o workbook atual como anexo a partir do Excel. Siga os passos abaixo.
1. Pressione as teclas "Alt" + "F11". Na janela "Microsoft Visual Basic for Applications", clique em "Ferramentas" > "Referências". Em seguida, marque a opção "Microsoft Outlook16.0 Object Library" e clique em "OK" na caixa de diálogo "Referências – VBAProject".
2. Clique em "Inserir" > "Módulo". Em seguida, cole o código VBA abaixo na janela "Módulo (Código)".
Código VBA: Enviar o workbook atual como anexo por e-mail a partir do Excel por uma conta específica do Outlook
Sub SendWorkBook()
'Update by Extendoffice 20220809
Dim OutlookApp As Object
Dim OutlookMail As Outlook.MailItem 'important! Here can’t be declared as Object
Dim xAccount As Account
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(olMailItem)
On Error Resume Next
'The following lines helps to specify a certian email account
For Each xAccount In OutlookApp.Session.Accounts
If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("zxm@addin99.com") Then 'Specify your email account here
OutlookMail.SendUsingAccount = xAccount
End If
Next
'End
With OutlookMail
.To = "xxx@aaa.com"
.CC = "Email Address"
.BCC = "Email Address"
.Subject = "kte feature"
.Body = "Hello, please check and read this document, thank you."
.Attachments.Add Application.ActiveWorkbook.FullName
.Display
'.Send
End With
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
3. Pressione a tecla "F5" para executar o código. Uma mensagem de e-mail do Outlook será exibida e você verá que o campo "De" está preenchido com a conta de e-mail especificada no código.
4.4 Enviar um e-mail quando uma data for atingida
Se você precisa enviar um e-mail com base em uma data de vencimento específica, por exemplo, conforme mostrado na imagem abaixo, há uma tabela de projetos, "quando a data de vencimento no intervalo E2:E7 for igual ou menor que7 dias a partir de hoje (considerando a data atual como04/08/2022)", um e-mail será enviado automaticamente aos responsáveis pelos projetos, notificando que o projeto está prestes a expirar.
1. Na planilha que contém a tabela de projetos, clique com o botão direito na guia da planilha e selecione "Visualizar código" no menu de contexto.
2. Na janela "Microsoft Visual Basic for Applications" que abrir, cole o código VBA abaixo na janela "Planilha (Código)".
Código VBA: Enviar e-mail automaticamente quando uma data de vencimento for atingida
Public Sub SendMailDueDate()
'Updated by Extendoffice 20220804
Dim xRgDate As Range
Dim xRgSend As Range
Dim xRgText As Range
Dim xRgDone As Range
Dim xOutApp As Object
Dim xMailItem As Object
Dim xLastRow As Long
Dim vbCrLf As String
Dim xMailBody As String
Dim xRgDateVal As String
Dim xRgSendVal As String
Dim xMailSubject As String
Dim i As Long
On Error Resume Next
Set xRgDate = Range("E2:E7") 'Please reference the due date column range
If xRgDate Is Nothing Then Exit Sub
Set xRgSend = Range("C2:C7") 'Please reference the email addresses column range
If xRgSend Is Nothing Then Exit Sub
Set xRgText = Range("D2:D7") 'Please reference the remark column range (the remark used to notify project leaders of the expiration of the project)
If xRgText Is Nothing Then Exit Sub
xLastRow = xRgDate.Rows.Count
Set xRgDate = xRgDate(1)
Set xRgSend = xRgSend(1)
Set xRgText = xRgText(1)
Set xOutApp = CreateObject("Outlook.Application")
For i = 1 To xLastRow
xRgDateVal = ""
xRgDateVal = xRgDate.Offset(i - 1).Value
If xRgDateVal <> "" Then
If CDate(xRgDateVal) - Date <= 7 And CDate(xRgDateVal) - Date > 0 Then
xRgSendVal = xRgSend.Offset(i - 1).Value
xMailSubject = xRgText.Offset(i - 1).Value & " on " & xRgDateVal
vbCrLf = "
"
xMailBody = ""
xMailBody = xMailBody & "Dear " & xRgSendVal & vbCrLf
xMailBody = xMailBody & "Remark : " & xRgText.Offset(i - 1).Value & vbCrLf
xMailBody = xMailBody & ""
Set xMailItem = xOutApp.CreateItem(0)
With xMailItem
.Subject = xMailSubject
.To = xRgSendVal
.CC = "Email address"
.BCC = "Email address"
.HTMLBody = xMailBody
.Display
'.Send
End With
Set xMailItem = Nothing
End If
End If
Next
Set xOutApp = Nothing
End Sub
Observação: No código,
3. Pressione a tecla "F5" para executar o código. Se a data de vencimento atender às condições, o e-mail correspondente será criado. Neste caso, dois e-mails serão criados conforme mostrado na imagem abaixo.
5. Uma ferramenta prática para ajudar você a enviar e-mails facilmente a partir do Excel
Se você é iniciante em VBA, os métodos acima podem não ser fáceis de aplicar. Por isso, recomendamos o recurso "Enviar E-mails" do Kutools para Excel. Com esse recurso, você pode enviar e-mails facilmente a partir do Excel com apenas alguns cliques. Siga os passos abaixo.
5.1 Crie facilmente uma lista de envio que inclua os campos de e-mail necessários
Antes de aplicar o recurso Enviar E-mails, é necessário criar uma lista de envio que contenha os campos de e-mail necessários. O recurso Criar Lista de Correspondência pode ajudar.
1. Clique em "Kutools Plus" > "Criar Lista de Correspondência".
2. Na janela "Criar Lista de Correspondência" que abrir, configure conforme abaixo.
Uma tabela de exemplo de lista de envio será criada conforme mostrado na imagem abaixo.
3. Agora, substitua os dados originais do exemplo pelos seus próprios dados de campo.
Agora você criou uma tabela de lista de envio. Em seguida, aplique o recurso "Enviar E-mails" para enviar e-mails do Excel com base nos campos criados.
Kutools para Excel - Potencialize o Excel com mais de 300 ferramentas essenciais. Aproveite recursos de IA permanentemente gratuitos! Obtenha Agora
5.2 Envie facilmente e-mails incluindo os campos criados na lista de envio
Após criar a lista de envio (clique para saber como) que contém os campos necessários nos seus e-mails, agora você pode enviar e-mails do Excel com esses campos.
1. Selecione toda a lista de envio e clique em "Kutools Plus" > "Enviar E-mails".
2. Na caixa de diálogo "Enviar E-mails", faça a seguinte configuração.
3. Uma caixa de diálogo "Kutools para Excel" será exibida informando quantos e-mails foram enviados. Clique em "OK" para fechar a caixa de diálogo.
Dica: Você pode acessar a pasta "Itens Enviados" no Outlook para verificar os e-mails enviados.
5.3 Envie facilmente e-mails com corpo em HTML (incluindo hiperlink, imagem, etc.)
O recurso Enviar E-mails permite criar um e-mail em HTML, incluindo hiperlink, imagem, diferentes tamanhos e cores de fonte, etc.
Após criar uma lista de envio que inclua os campos de e-mail necessários, ao configurar a caixa de diálogo Enviar E-mails, você pode enriquecer o corpo do e-mail usando as opções da barra de ferramentas.
Veja a imagem abaixo:
5.4 Insira facilmente a assinatura padrão do Outlook ao enviar e-mails
No método acima, mostramos um código VBA para ajudar a enviar e-mails com a assinatura padrão do Outlook. Com o recurso Enviar E-mails, basta marcar uma opção para que a assinatura padrão do Outlook seja inserida nos e-mails enviados do Excel.
Após criar uma lista de envio que inclua os campos de e-mail necessários, ao configurar a caixa de diálogo Enviar E-mails, clique em "Opções" > "Usar configurações de assinatura do Outlook".
Observação: Certifique-se de que haja uma marca de seleção exibida antes da opção Usar configurações de assinatura do Outlook.
Quando os destinatários receberem o e-mail, verão a assinatura padrão do Outlook exibida ao final do corpo do e-mail.
5.5 Envie facilmente e-mails de uma conta de e-mail específica
Para usar uma conta de e-mail específica para enviar e-mails do Excel em vez da conta padrão, o recurso Enviar E-mails também pode ajudar a realizar essa tarefa facilmente.
Após criar uma lista de envio que inclua os campos de e-mail necessários, ao configurar a caixa de diálogo Enviar E-mails, clique em "Opções" > "Enviado de", depois selecione a conta de e-mail desejada para enviar os e-mails.
Observação: Após selecionar a conta de e-mail, uma marca de seleção será exibida antes dela.
Clique aqui para saber mais sobre o recurso Enviar E-mails.
Kutools para Excel - Potencialize o Excel com mais de 300 ferramentas essenciais. Aproveite recursos de IA permanentemente gratuitos! Obtenha Agora
Em resumo, enviar e-mails a partir do Excel é bastante útil no nosso dia a dia. Este artigo aborda tópicos abrangentes sobre envio de e-mails a partir do Excel. Se houver outros tópicos ou soluções mais fáceis, deixe um comentário para me avisar.
Melhores Ferramentas de Produtividade para Office
Impulsione suas habilidades no Excel com Kutools para Excel e experimente uma eficiência sem igual. Kutools para Excel oferece mais de300 recursos avançados para aumentar sua produtividade e economizar tempo.Clique aqui para obter o recurso que você mais precisa...
Office Tab traz interface de abas para o Office e facilita muito seu trabalho
- Habilite a edição e leitura com abas no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Abra e crie vários documentos em novas abas da mesma janela, em vez de novas janelas.
- Aumente sua produtividade em50% e reduza centenas de cliques do mouse todos os dias!