Ir para o conteúdo principal

Tutorial do Excel – Enviar e-mails do Excel

Normalmente, usamos clientes de e-mail como Outlook, Gmail, etc. para enviar e-mails. Mas, muitas pessoas armazenam dados em pastas de trabalho do Excel e precisam enviar alguns dados para outras pessoas enquanto trabalham com eles. Portanto, eles precisam enviar emails diretamente da pasta de trabalho do Excel, o que economiza o tempo de operação de um cliente de email. Este tutorial passo a passo mostrará como enviar e-mails do Excel em diferentes condições.

Note: Antes de aplicar os métodos a seguir, você precisa configurar um cliente de email do Outlook em seu computador e defini-lo como seu cliente de email padrão.

Sumário: [ Esconder ]

(Clique em qualquer título no índice abaixo ou à direita para navegar até o capítulo correspondente.)

1. Noções básicas de envio de e-mails do Excel

Esta seção apresenta as noções básicas de envio de e-mails do Excel.

1.1 Envie e-mails do Excel com funções integradas do Excel

Se você deseja apenas enviar e-mails simples do Excel, incluindo apenas os campos Para, Assunto, Cc e corpo. As funções internas do Excel podem ajudar.


1.1.1 Enviar e-mail do Excel com uma fórmula

Conforme mostrado na tabela abaixo, para enviar diferentes e-mails do Excel com base nos campos fornecidos, você pode usar as referências de célula dos campos fornecidos para criar diferentes fórmulas de hiperlink para fazer isso. Depois de criar os hiperlinks de e-mail, você pode clicar no hiperlink necessário para enviar um e-mail 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 é dividida em quatro partes para mostrar as etapas para adicionar endereço de e-mail, destinatário(s) Cc, linha de assunto e corpo do texto separadamente à fórmula do hiperlink. Por favor, faça o seguinte.

A sintaxe e os argumentos do HIPERLINK função são as seguintes.

Sintaxe

HYPERLINK(link_location, [friendly_name])

Argumentos

Link___cpLocation (obrigatório): O caminho e o nome do arquivo para o documento a ser aberto;
Dicas: Neste tutorial, todos os campos que precisamos para um e-mail, como o endereço de e-mail do destinatário, o(s) destinatário(s) Cc, a linha de assunto e o corpo do texto, devem ser colocados no primeiro argumento "link_location".
Nome amigável (opcional): O valor de salto que é exibido na célula.

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 email. Neste exemplo, o endereço de e-mail do primeiro destinatário está na célula B2, portanto, precisamos adicionar "mailto:" e referenciá-lo à célula B2.

“mailto:”&B2

1. Selecione uma célula para exibir o hiperlink. Neste caso, seleciono a célula F2.

2. Em seguida, insira a seguinte fórmula nele.

=HYPERLINK("mailto:"&B2)

Note: Se você pressionar o botão Entrar key, um hiperlink será criado conforme mostrado na captura de tela abaixo. Ao clicar no link, um e-mail do Outlook será criado e o endereço de e-mail do destinatário será preenchido automaticamente no campo Para.

O endereço de e-mail do destinatário agora é adicionado à fórmula de hiperlink. Continue com as etapas a seguir para adicionar a linha de assunto, o(s) destinatário(s) Cc e o corpo do texto conforme necessário.


1.1.1.2 Adicionar destinatário(s) Cc à fórmula de hiperlink

Para adicionar o(s) destinatário(s) Cc à função Hyperlink, adicione "?cc=" como parte da fórmula a seguir.

"?cc=" & C2
onde C2 contém o endereço de e-mail do destinatário cc.

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 Hyperlink, adicione "&assunto=" como parte da fórmula a seguir.

"&assunto="& D2
onde C2 contém o assunto do email.

A fórmula na célula F2 agora deve ter a seguinte aparência:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2)


1.1.1.4 Adicionar corpo de texto com quebras de linha à fórmula de hiperlink

A última etapa é adicionar o corpo do texto à fórmula do hiperlink. Como você pode ver no exemplo, duas linhas de texto no E2 são separadas por uma quebra de linha e você deseja manter a quebra de linha no corpo do email. O Outlook reconhece a quebra de linha nesta circunstância? Vamos verificar.

Para adicionar o corpo do texto à fórmula do hiperlink, você precisa adicionar “&corpo=” como parte da fórmula a seguir.

"&body="& E2
onde E2 contém o texto do corpo do e-mail.

A fórmula na célula F2 agora é exibida da seguinte forma:

=HYPERLINK("mailto:" & B2 & "?cc=" & C2 & "&subject="& D2 & "&body="& E2)

Observação: Se você pressionar o Entrar chave e clique no link. Você pode ver no novo email que o conteúdo do corpo do email é exibido na mesma linha.

Para exibir o corpo do email em linhas separadas, você precisa modificar o conteúdo da célula adicionando o código do caractere de retorno de carro % 0A ao texto onde você precisa inserir uma quebra de linha. Veja captura de tela:


1.1.1.5 Especifique o texto a ser exibido para o hiperlink

Nas etapas acima, finalizamos o argumento Link_location com campos de email. Aqui nesta seção, vamos terminar o próximo argumento [friendly_name].

Nesse caso, quero que a célula do hiperlink exiba o texto como “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 o botão Entrar chave para obter o resultado.

Selecione esta célula de fórmula e arraste sua Identificador de preenchimento automático para baixo para criar outros hiperlinks de e-mail. Veja captura de tela:


1.1.2 Enviar e-mail do Excel com a função Hyperlink

Exceto para usar a fórmula de hiperlink acima, você pode criar manualmente um hiperlink de e-mail com o inserção Hyperlink função no Excel. Esta seção mostrará as etapas.

1. Clique com o botão direito do mouse em um e-mail no qual deseja inserir um hiperlink, selecione Ligação no menu do botão direito.

2. No popping up Insira o hyperlink caixa de diálogo, você precisa configurar da seguinte maneira.

2.1) Selecione E-mail no painel esquerdo.
2.2) No Texto para exibir caixa de texto, digite o texto que deseja exibir na célula;
Tips: você não pode usar referências de célula nesta caixa de diálogo, então você deve digitar os campos de e-mail manualmente da seguinte forma.
2.3) No Endereço de e-mail caixa de texto, você precisa digitar os seguintes endereços de e-mail.
mailto: endereço de e-mail
Por favor, substitua o texto “endereço de email” com seu endereço de e-mail real. Se você tiver mais de um endereço de e-mail, separe-os por ponto e vírgula.
2.4) No Assunto caixa de texto, você pode especificar o assunto e o corpo do e-mail aqui. Por favor configure da seguinte forma:
Assunto do e-mail&body=Corpo do e-mail
Neste caso, eu digito Venda mensal&body=Oi,%0AEmail recebido.
> onde o assunto é Venda Mensal;
e
> o corpo do email é:
Oi,
Email recebido. (% 0A é o código de caractere de retorno de carro que pode ser reconhecido pelo Outlook)
2.5) Clique no OK botão para salvar o hiperlink. Veja captura de tela:

Ao clicar no hiperlink, um e-mail do Outlook será criado com os campos Para, Assunto e Corpo especificados, conforme mostrado na captura de tela abaixo.

Notas:

1) Com este método, você tinha que criar os hiperlinks de email cada um manualmente.
2) Você não pode adicionar o campo Cc aos emails com este método. Portanto, se você precisar do campo Cc, adicione-o na nova janela de e-mail de abertura.

1.2 Enviar email para vários destinatários em células com script VBA

No exemplo acima, você pode ver vários endereços de e-mail exibidos em uma célula, separados por ponto e vírgula. Se você tem uma lista de endereços de e-mail como mostrado na captura de tela abaixo e deseja enviar um e-mail ou e-mail independente para todos eles, o código VBA a seguir pode ser útil.


1.2.1 Envie um email para vários destinatários em células com script VBA

1. Na planilha que contém todos os endereços de e-mail para os quais você deseja enviar o e-mail. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo, e cole o seguinte código no Módulo (Código) janela.

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. aperte o F5 chave para executar o código e um Kutools for Excel caixa de diálogo aparece. Selecione a lista de endereços de e-mail e clique em OK.

Observações:

1) Se você não quiser que a caixa de diálogo acima apareça e quiser especificar o intervalo de endereços de e-mail diretamente no código, substitua esta linha:
Definir xRg = Application.InputBox("Selecione a lista de endereços:", "Kutools for Excel", xTxt, , , , , 8)
com
Definir xRg = Range("A2:A7")
2) Você pode especificar seu próprio assunto e corpo de e-mail nas seguintes linhas:
.Assunto = "Teste"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar o e-mail diretamente sem abrir a nova janela de mensagem a seguir, você precisa substituir esta linha:
.Exibição
com
.Mandar

Depois de executar o código, todos os endereços de e-mail no intervalo selecionado são exibidos no campo Para da janela de mensagem. Veja captura de tela:


1.2.2 Enviar emails separadamente para cada destinatário listado nas células com script VBA

O código acima adiciona todos os endereços de e-mail no intervalo selecionado ao campo Para da janela de mensagem. Se você deseja enviar emails para cada endereço de email listado nas células separadamente sem permitir que eles vejam os endereços de email uns dos outros, você pode tentar o seguinte script VBA.

1. Na planilha que contém todos os endereços de e-mail para os quais você deseja enviar os e-mails. aperte o outro + F11 chaves para abra a janela Microsoft Visual Basic for Applications.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Móduloe cole o código a seguir na janela Módulo (Código).

Código VBA: Envie emails para cada endereço de email listado nas células separadamente

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. Então clique Ferramentas > Referências. No Referências - VBAProject caixa de diálogo, localize e verifique o Biblioteca de objetos do Microsoft Outlook 16.0 caixa e, em seguida, clique no botão OK para salvar as alterações.

4. aperte o F5 chave para executar o código e um Kutools for Excel caixa de diálogo aparece. Selecione a lista de endereços de e-mail e clique em OK.

Observações:

1) Se você não quiser que a caixa de diálogo acima apareça e quiser especificar o intervalo de endereços de e-mail diretamente no código, substitua esta linha:
Definir xRg = Application.InputBox("Selecione a lista de endereços:", "Kutools for Excel", xTxt, , , , , 8)
com
Definir xRg = Range("A2:A7")
2) Você pode especificar seu próprio assunto e corpo de e-mail nas seguintes linhas:
.Subject = "Test"
.Body = "Dear " _
        & vbNewLine & vbNewLine & _
        "This is a test email " & _
        "sending in Excel"
3) Para enviar o e-mail diretamente sem abrir as seguintes janelas de mensagem, você precisa substituir esta linha:
.Exibição
com
.Mandar

Neste exemplo, há seis endereços de email no intervalo selecionado, portanto, seis janelas de mensagens do Outlook serão criadas automaticamente com endereços de email separados listados no campo Para, conforme mostrado na captura de tela abaixo.

5. Por fim, clique ENVIAR botão para enviar o e-mail um por um.


2. Insira anexos ou assinatura do Outlook nos e-mails enviados do Excel (com scripts VBA)

Esta seção mostrará como inserir anexos ou assinatura padrão do Outlook nos emails enviados do Excel.

2.1 Inserir anexos nos e-mails enviados do Excel

Aqui descrevemos os diferentes casos de inserção de anexos, e você pode escolher o método de acordo com suas necessidades. Nesta seção, você pode aprender a (clique em qualquer um dos links a seguir para navegar até o método correspondente):


2.1.1 Enviar um determinado arquivo como anexo

Você pode aplicar o seguinte código VBA para enviar por email um ou mais arquivos em uma pasta como anexos do Excel.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o seguinte código VBA na janela Módulo (Código).

Código VBA: Enviar arquivos de e-mail em uma pasta como anexos 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 = ""
            .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

Notas:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do seu próprio destinatário;
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "teste" e .HTMLBody = "teste";
3) Você pode adicionar destinatários Cc e Cco conforme necessário. Basta adicionar as duas linhas a seguir abaixo da linha .Para = .
.CC = "endereço de e-mail"
.BCC = "endereço de e-mail"

3. Então clique Ferramentas > Referências. No Referências - VBAProject caixa de diálogo, localize e verifique o Biblioteca de objetos do Microsoft Outlook 16.0 caixa e, em seguida, clique no botão OK para salvar as alterações.

4. aperte o F5 para executar o código, então um Procurar janela pop-up, selecione os arquivos que você precisa anexar no e-mail e clique em OK.

Em seguida, uma janela de mensagem aparece. Você pode ver que os arquivos selecionados são exibidos como anexos no campo Anexado.


2.1.2 Envie por e-mail a planilha atual como um anexo

Se você quiser enviar a planilha atual como um anexo do Excel, poderá aplicar o script VBA nesta seção.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserir > Módulo. Em seguida, cole o seguinte código VBA no Módulo (Código) janela.

Código VBA: envie por e-mail a planilha atual como um anexo

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 = ""
    .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:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "recursos kte" e .Body = "Por favor, verifique e leia este documento.";
3) Nas duas linhas a seguir:
.CC = "endereço de e-mail"
.BCC = "endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “endereço de email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

3. aperte o F5 key para executar o código, a planilha atual é salva como uma pasta de trabalho do Excel e inserida automaticamente em uma janela de mensagem como um anexo. Veja captura de tela:

Observação: A pasta de trabalho anexada que contém apenas a planilha atual tem o mesmo nome da pasta de trabalho original. E a hora em que você executa o código também é adicionada ao nome da pasta de trabalho.


2.1.3 Enviar por e-mail a pasta de trabalho atual como um anexo

Depois de aprender o código VBA para enviar a planilha atual como anexo do Excel, aqui fornecemos outro script VBA para ajudá-lo a enviar a pasta de trabalho inteira como anexo. Por favor, faça o seguinte.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o seguinte código VBA na janela Módulo (Código).

Código VBA: Envie por e-mail a pasta de trabalho atual como um anexo 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 = ""
    .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:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "recursos kte" e .Body = "Por favor, verifique e leia este documento.";
3) Nas duas linhas a seguir:
.CC = "endereço de e-mail"
.BCC = "endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “endereço de email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

3. aperte o F5 key para executar o código, a pasta de trabalho atual é inserida em uma janela de mensagem como um anexo automaticamente. Veja captura de tela:


2.1.4 Envie por e-mail a pasta de trabalho inteira como um anexo em PDF

Para a maioria das pessoas, eles tendem a salvar uma pasta de trabalho do Excel como um arquivo PDF e depois enviá-la como um anexo para outras pessoas. Nesta seção, mostrarei uma maneira de enviar e-mails diretamente do Excel com a pasta de trabalho aberta atual como um anexo em PDF sem precisar salvar manualmente a pasta de trabalho como um arquivo PDF.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o seguinte código VBA na janela Módulo (Código).

Código VBA: envie por e-mail a pasta de trabalho inteira como um 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 = ""
       .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:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "teste" e .Body = "teste";
3) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.
4) O nome do arquivo PDF será igual ao nome da pasta de trabalho original. E a hora em que você executa o código também será adicionada ao nome da pasta de trabalho. Se você não precisar adicionar o carimbo de data/hora ao nome do arquivo, remova & Format(Agora, "dd-mmm-aa h-mm-ss") da linha a seguir.
FileName = Left(Wb.Name, (InStrRev(Wb.Name, ".", -1, vbTextCompare) - 1)) & Format(Now, "dd-mmm-yy h-mm-ss") & ".pdf "

3. aperte o F5 chave para executar o código. Em seguida, a pasta de trabalho atual é inserida automaticamente em uma nova janela de mensagem como um anexo de arquivo PDF. Veja captura de tela:


2.1.5 Envie por e-mail a planilha atual como um anexo em PDF

Por exemplo, há uma pasta de trabalho chamada “Vendas mensais” e você concluiu uma tabela de relatórios de vendas em uma planilha chamada “relatório de vendas” e deseja enviar esta planilha como um arquivo PDF para seus colegas. O seguinte código VBA pode lhe fazer um favor.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserir > Módulo. Em seguida, cole o seguinte código VBA na janela Módulo (Código).

Código VBA: envie por e-mail a planilha atual como um 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 = ""
    .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:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "teste" e .Body = "teste";
3) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.
4) O nome do arquivo PDF será: o nome da pasta de trabalho original_o nome da planilha original. Nesse caso, o nome do PDF será Relatório mensal de vendas_vendas.

3. aperte o F5 chave para executar o código. Em seguida, a planilha atual é inserida automaticamente em uma nova janela de mensagem como um anexo de arquivo PDF. Veja captura de tela:


2.2 Inserir assinatura do Outlook nos emails enviados do Excel

Tome o caso acima como exemplo, você aplica o código VBA acima para enviar a planilha atual como um anexo de arquivo PDF do Excel, mas a assinatura do Outlook não pode ser adicionada à janela da mensagem. Para manter a assinatura padrão do Outlook no email enviado do Excel, o método a seguir ajudará.

Dois códigos VBA estão listados abaixo.

Código VBA 1: O código ajuda a reter a assinatura do Outlook.

Código VBA 2: O código ajuda a enviar por e-mail a planilha atual como um anexo em PDF.

Código VBA 1: reter a assinatura do Outlook

.HTMLBody = "Email body" & "
" & .HTMLBody

Código VBA 2: envie por e-mail a planilha atual como um 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 = ""
    .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, você precisa pressionar o botão outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o código VBA 2 acima na janela Módulo (Código).

3. Para manter a assinatura padrão do Outlook no email enviado do Excel, você precisa modificar o código VBA 2 da seguinte forma:

1) Substitua o .Corpo alinhar com Código VBA 1;
2) Mova a linha .Exibição sob a linha Com OutlookMail (ou Com xMailOut em outros códigos). Veja a imagem:

Aqui está 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 = ""
    .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. aperte o F5 chave para executar o código. Em seguida, você receberá uma nova janela de mensagem com a planilha atual anexada como um arquivo PDF, enquanto a assinatura padrão do Outlook será inserida no final do corpo do email automaticamente.


3. Envie e-mails automaticamente do Excel quando uma condição for atendida (com scripts VBA)

Nos exemplos acima, você precisa executar o código manualmente para obter a entrega do email. Se você quiser acionar o código automaticamente quando uma determinada condição for atendida, como quando uma célula atingir um determinado valor, quando o valor de uma célula for alterado, quando uma data for atingida, etc., o e-mail será enviado automaticamente. Esta seção lista as condições que os usuários do Excel costumam pesquisar no Google para ajudá-lo a enviar e-mails automaticamente do Excel quando uma determinada condição for atendida.

3.1 Enviar um e-mail automaticamente quando uma célula atinge um determinado valor

Conforme mostrado na captura de tela abaixo, suponha que você tenha uma tabela de vendas com a célula D6 contendo o total de vendas. 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 exceder 10000, mas se o total de vendas for igual ou inferior a 10000, nenhuma ação será tomada.

1. Na planilha que contém a tabela de vendas, clique com o botão direito na aba da planilha e clique em Ver código no menu do botão direito.

2. Na abertura Microsoft Visual Basic para Aplicações janela, cole o seguinte código VBA na Folha (Código) janela.

Código VBA: enviar um email automaticamente quando uma célula atinge um 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 = ""
.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

Notas:

1) D6 é a célula cujo valor você enviará um email com base.
2) > 10000 é a condição, o que significa que um email será enviado quando o valor em D6 for maior que 10000.
3) Faixa ("D6") na linha a seguir significa que o corpo do email fará referência ao valor em D6.
xMailBody = "Hi boss" & vbNewLine & vbNewLine & _
"Total sales of over $10,000 in January: " & Range("D6")
4) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
5) Altere o assunto do email na linha .Subject = "teste".
6) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

A partir de agora, quando o valor na célula D6 ultrapassar 10000, um email será criado conforme mostrado na captura de tela abaixo.


3.2 Enviar um e-mail automaticamente quando o valor de uma célula for alterado

Conforme mostrado na captura de tela abaixo, suponha que você receba uma pasta de trabalho que contenha vendas mensais em diferentes planilhas e o total de vendas em uma planilha. Você precisa verificar o total de vendas e se o total de vendas for modificado, enviar a pasta de trabalho de volta ao remetente e informar ao remetente que a célula foi modificada.

1. Na planilha que contém a tabela de vendas, clique com o botão direito na aba da planilha e clique em Ver código no menu do botão direito.

2. Na abertura Microsoft Visual Basic para Aplicações janela, cole o seguinte código VBA na janela Planilha (Código).

Código VBA: envie um email automaticamente quando um valor de célula especificado 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 = ""
.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

Notas: No código,

1) B14 no código significa que quando o valor da célula B14 mudar, você enviará um email.
2) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
3) Altere o assunto do email na linha .Assunto = "Planilha modificada".
4) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

A partir de agora, quando o valor na célula B14 for alterado, uma mensagem do Outlook será criada automaticamente, conforme mostrado na captura de tela abaixo.


3.3 Enviar um e-mail automaticamente quando uma pasta de trabalho é salva

Se você tiver uma pasta de trabalho que precisa ser compartilhada com outras pessoas após a modificação, normalmente você precisa salvar a pasta de trabalho, iniciar o cliente de email, criar um novo email com esta pasta de trabalho anexada, compor os campos correspondentes e enviar o email. Esta seção mostrará um método para criar um email automaticamente sempre que você salvar a pasta de trabalho. Por favor, faça o seguinte.

1. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. Nesta janela, clique duas vezes Esta pasta de trabalho no Projeto painel e cole o seguinte código VBA no Esta Pasta de Trabalho (Código) janela.

Código VBA: enviar um email automaticamente quando uma pasta de trabalho é salva

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 = ""
        .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

Notas: No código,

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto e o corpo do e-mail separadamente nas linhas .Subject = "A pasta de trabalho foi atualizada" e .Body = "Oi," & Chr(13) & Chr(13) & "Arquivo agora atualizado.".
3) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

3. A partir de agora, ao salvar a pasta de trabalho pressionando o Ctrl + S teclas ou clicando no Salvar botão, um e-mail do Outlook será criado automaticamente. Você pode ver que a pasta de trabalho atual está anexada como um anexo e os campos são preenchidos com o conteúdo especificado. Veja captura de tela:

Tips: Se você usa esta pasta de trabalho com frequência, aqui recomendamos que você salve a pasta de trabalho como um Pasta de trabalho habilitada para macro do Excel para salvar o script VBA para uso futuro. Os passos são os seguintes.

1) Clique Envie o > Salvar comoe escolha uma pasta para salvar o arquivo.
2) No Salvar como caixa de diálogo, renomeie o arquivo conforme necessário na Nome do arquivo caixa de texto, escolha Pasta de trabalho habilitada para macro do Excel no Salvar como tipo lista suspensa e, finalmente, clique no Salvar botão. Veja a imagem:


3.4 Enviar um e-mail automaticamente em um horário específico

Digamos que você precise enviar um email com uma pasta de trabalho de atribuição de tarefas para alguém todas as sextas-feiras às 9h, e deseja fazer isso automaticamente no Excel sem precisar operar manualmente o cliente de e-mail. Esta seção mostrará o método para fazê-lo.

1. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o seguinte código VBA na janela Módulo.

Código VBA1 : Envie por e-mail a pasta de trabalho atual como um anexo 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 = ""
    .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 Esta pasta de trabalho no Projeto painel e cole o seguinte código VBA no Esta Pasta de Trabalho (Código) janela.

Código VBA 2: enviar um e-mail automaticamente em um horário específico

Private Sub Workbook_Open()
    Application.OnTime TimeValue("09:00:00"), "Timer"
End Sub

Notas:

1) No código VBA 1, Sexta-feira na linha a seguir significa que o e-mail será enviado automaticamente toda sexta-feira;
Se Dia da Semana(Data) = vbSexta Então
2) No código VBA 1 e no código VBA 2, o tempo 09:00:00 significa que o e-mail será enviado às 9h de um determinado dia.
Você pode alterar o dia e a hora conforme sua necessidade.
3) Quando o código for executado, um email será criado. Se você não quiser abrir a janela da mensagem e precisar enviá-la diretamente, remova a linha .Exibição do código VBA 1 e remova o apóstrofo antes da linha '.Mandar.

4. Salve os códigos e salve a pasta de trabalho como uma pasta de trabalho habilitada para macro do Excel da seguinte maneira.

4.1) Clique Envie o > Salvar comoe escolha uma pasta para salvar o arquivo.
4.2) No Salvar como caixa de diálogo, renomeie o arquivo conforme necessário na Nome do arquivo caixa de texto, escolha Pasta de trabalho habilitada para macro do Excel no Salvar como tipo lista suspensa e, finalmente, clique no Salvar botão. Veja a imagem:

5. Abra sua pasta de trabalho habilitada para macro salva, então um e-mail será criado ou enviado automaticamente quando o dia e a hora chegarem.


4. Tópicos adicionais

Esta seção coleta outros tópicos que você pode encontrar ao enviar emails do Excel.

4.1 Enviar por e-mail um intervalo de células do Excel (com script VBA)

Supondo que haja uma tabela de vendas mensal em uma planilha do Excel, conforme mostrado na captura de tela abaixo, e você precise enviar essa tabela de vendas mensal para outras pessoas como o conteúdo do corpo de um email ou como um anexo diretamente. Aqui nós fornecemos dois métodos para fazê-lo.

4.1.1 Enviar um intervalo por e-mail como parte do conteúdo do corpo do Excel

Você pode executar o seguinte código VBA para enviar um intervalo de células como parte do conteúdo do corpo do email do Excel

1. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela.

2. No Microsoft Visual Basic para Aplicações janela, clique em Ferramentas > Referências. E então verifique o Biblioteca de objetos do Microsoft Outlook 16.0 caixa e clique OK no Referências - VBAProject caixa de diálogo.

3. Clique inserção > Módulo, cole o seguinte código VBA no Módulo (Código) janela.

Código VBA: envie um intervalo de células como parte do conteúdo do corpo do email 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 = ""
        .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

Notas: No código,

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

4. aperte o F5 chave para executar o código. No apareceu Kutools for Excel caixa de diálogo, selecione o intervalo de células que você precisa enviar como parte do conteúdo do corpo do e-mail e clique em OK. Veja a imagem:

Em seguida, um e-mail do Outlook será criado automaticamente. Você pode ver que o intervalo selecionado na planilha está inserido no corpo do email. Veja captura de tela:


4.1.2 Enviar por e-mail um intervalo como anexo do Excel

Se você precisar enviar por email um intervalo de células em uma planilha como um anexo do Excel. Você pode tentar o seguinte código VBA.

1. aperte o outro + F11 chaves.

2. Na abertura Microsoft Visual Basic para Aplicações janela, clique em inserção > Módulo. Em seguida, cole o seguinte código VBA no Módulo (Código) janela.

Código VBA: Enviar um intervalo por e-mail como anexo do Excel

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 = ""
    .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

Notas:

1) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
2) Altere o assunto do e-mail e o corpo do e-mail separadamente na linha .Subject = "Vendas mensais para 2021" e .Body = "Olá, por favor verifique e leia este documento.";
3) Nas duas linhas a seguir:
.CC = "endereço de e-mail"
.BCC = "endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “endereço de email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

3. aperte o F5 chave para executar o código. No apareceu Kutools for Excel caixa de diálogo, selecione o intervalo de células que você precisa enviar como anexo em um email e clique em OK. Veja a imagem:

Em seguida, um e-mail do Outlook será criado automaticamente. E o intervalo de células selecionado na planilha é salvo como uma pasta de trabalho do Excel e anexado na janela Mensagem. Veja captura de tela:


4.2 Enviar e-mails quando um botão é clicado no Excel

Se você precisar clicar em um botão de comando para acionar uma macro para enviar um email do Excel, por exemplo, envie a pasta de trabalho atual como um anexo para outras pessoas clicando em um botão de comando na planilha. Você pode seguir os passos a seguir para fazê-lo.

1. Clique Developer > inserção > Botão de comando (controle ActiveX). Em seguida, desenhe um botão de comando na planilha.

Tips: se você já tiver um botão de comando, ignore esta etapa.

2. aperte o outro + F11 chaves para abrir o Microsoft Visual Basic para Aplicações janela. Na janela, clique em inserção > Modo, cole o código VBA (o código usado para enviar por email a pasta de trabalho atual como um anexo do Excel) na janela Módulo (Código).

Clique aqui para obter o código.

Note: Aqui o nome da macro que você criou na etapa 2 é Enviar pasta de trabalho.

3. aperte o outro + Q chaves para fechar o Microsoft Visual Basic para Aplicações janela.

4. Agora você precisa atribuir a macro ao botão de comando. Clique com o botão direito do mouse no botão de comando, selecione Ver código no menu do botão direito do mouse.

5. Então o Microsoft Visual Basic para Aplicações janela aparece, você pode ver as duas linhas a seguir listadas na Folha (Código) janela.

Private Sub CommandButton1_Click()
End Sub

6. Digite o nome da macro existente dentro do subprocedimento do botão de comando.

7. aperte o outro + Q chaves para fechar o Editor Visual BasicE clique Developer > Modo de design para desligar o modo de desenho.

Agora você pode clicar no botão de comando para enviar um email com a pasta de trabalho atual como um anexo no email.


4.3 Enviar e-mails de uma conta de e-mail especificada

Normalmente, ao iniciar um email do Excel com código VBA, a conta de email do remetente é a conta padrão no Outlook. Suponha que você tenha configurado várias contas de e-mail no Outlook e queira usar uma determinada conta para enviar os e-mails do Excel em vez de usar a conta padrão. O seguinte código VBA pode ajudar.

Os seguintes códigos são necessários neste caso.

Código VBA 1:

Dim OutlookMail As Outlook.MailItem

Código VBA 2:

For Each xAccount In OutlookApp.Session.Accounts
  If VBA.LCase(xAccount.SmtpAddress) = VBA.LCase("") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next

Como usar o código VBA acima?

1) Em seu próprio código, você precisa substituir a linha como “Dim OutlookMail como objeto” com código VBA 1;
2) Adicione o código VBA 2 abaixo da linha “On Error Resume Next” em seu código. Em seguida, especifique o endereço de e-mail que você usará para enviar o e-mail no código VBA 2.

Neste exemplo, vamos especificar uma determinada conta de email para enviar a pasta de trabalho atual como um anexo do Excel. Por favor, faça o seguinte.

1. aperte o outro + F11 chaves. No Microsoft Visual Basic para Aplicações janela, clique em Ferramentas > Referências. E então verifique o Biblioteca de objetos do Microsoft Outlook 16.0 caixa e clique OK no Referências - VBAProject caixa de diálogo.

2. Clique inserção > Módulo. Em seguida, cole o seguinte código VBA no Módulo (Código) janela.

Código VBA: envie a pasta de trabalho atual como um anexo de email do Excel por meio de uma conta do Outlook especificada

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("") Then 'Specify your email account here
    OutlookMail.SendUsingAccount = xAccount
  End If
Next
'End
With OutlookMail
    .To = ""
    .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. aperte o F5 chave para executar o código. Em seguida, uma mensagem de e-mail do Outlook aparece, você pode ver que o De campo é preenchido com a conta de e-mail que você especificou no código.


4.4 Envie um e-mail quando uma data chegar

Se você precisar enviar um e-mail com base em uma data de vencimento específica, por exemplo, conforme mostrado na captura de tela abaixo, há uma tabela de projetos, quando a data de vencimento no intervalo E2:E7 for igual ou inferior a 7 dias a partir de hoje (assumindo que a data atual é 2022/8/4), um e-mail será enviado automaticamente aos líderes de projeto correspondentes e os notificará de que o projeto está prestes a expirar.

1. Na planilha contém a tabela do projeto, clique com o botão direito na guia da planilha e clique em Ver código no menu do botão direito.

2. Na abertura Microsoft Visual Basic para Aplicações janela, cole o seguinte código VBA na Folha (Código) janela.

Código VBA: envie um e-mail automaticamente quando uma data de vencimento for cumprida

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

Notas: No código,

1) Nas linhas a seguir, E2: E7 contém as datas de vencimento em que você enviará e-mails com base. C2: C7 contém os endereços de e-mail para os quais você enviará e-mails. E D2: D7 contém as observações que você adicionará no corpo do e-mail para notificar os destinatários de que o projeto está prestes a expirar. Você pode alterar os intervalos conforme necessário.
Definir xRgDate = Range("E2:E7")
Definir xRgSend = Range("C2:C7")
Set xRgText = Range("D2:D7")
2) A linha a seguir significa que a data de vencimento deve ser superior a 1 dia e igual ou inferior a 7 dias a partir de hoje. Você pode alterá-lo conforme sua necessidade.
If CDate(xRgDateVal) - Data <= 7 E CDate(xRgDateVal) - Data > 0 Then
3) Na linha .Para = , por favor substitua com o endereço de e-mail do destinatário real. Se você precisar de mais de um endereço de e-mail, separe-os com ponto e vírgula.
4) Altere o assunto do email na linha .Assunto = "Planilha modificada".
5) Nas duas linhas a seguir:
.CC = "Endereço de e-mail"
.BCC = "Endereço de e-mail"
Se você quiser adicionar os destinatários cc e bcc, substitua o texto “Email” nas linhas com os endereços de e-mail que você precisa.
Se você não precisar dos destinatários cc e bcc, basta adicionar um apóstrofo ' antes de cada linha.

3. aperte o F5 chave para executar o código. Então, se a data de expiração corresponder às condições, o email correspondente será criado. Nesse caso, dois e-mails serão criados conforme mostrado na captura de tela abaixo.


5. Uma ferramenta útil para ajudá-lo a enviar e-mails facilmente do Excel

Se você é um novato em VBA, os métodos acima podem não ser fáceis de manusear. Aqui recomendamos Kutools for Excel'S Mande emails recurso, com esse recurso, você pode enviar facilmente e-mails do Excel com apenas vários cliques. Por favor, faça o seguinte.

Antes de aplicar Kutools for Excel, Por favor baixe e instale primeiro.

5.1 Crie facilmente uma lista de e-mails que inclua os campos de e-mail necessários

Antes de aplicar o recurso Enviar e-mails, você precisa criar uma lista de e-mails que contenha os campos de e-mail necessários. Aqui o recurso Criar lista de discussão pode ajudar.

1. Clique Kutools Plus > Criar lista de discussão.

2. Na abertura Criar lista de discussão janela, você precisa configurar da seguinte forma.

2.1) No Colunas para lista de discussão seção, verifique os campos que você precisa em seu e-mail;
2.2) No Anexar arquivos seção, verifique um ou mais anexos que você possa precisar;
2.3) Especifique um local para colocar a lista de discussão;
2.4) Clique no Crie botão. Veja a imagem:

Em seguida, uma tabela de lista de discussão de amostra é criada conforme mostrado na captura de tela abaixo.

3. Agora você precisa substituir os dados originais na amostra pelos seus próprios dados de campo.

Agora você criou uma tabela de lista de discussão. Por favor, vá em frente para aplicar o Mande emails recurso para enviar e-mails do Excel com base nos campos que você criou.

  Se você quiser ter um teste gratuito (30 dias) deste utilitário, por favor clique para fazer o downloade, em seguida, aplique a operação de acordo com as etapas acima.


5.2 Envie e-mails facilmente, incluindo os campos que você criou na lista de e-mails

Depois de criar a lista de discussão (clique para saber como) que contém os campos que você pode precisar em seus emails, agora você pode enviar emails do Excel com esses campos.

1. Selecione toda a lista de discussão, clique em Kutools Plus > Mande emails.

2. No Mande emails caixa de diálogo, faça a seguinte configuração.

2.1) Os campos são preenchidos na caixa de diálogo de cada campo automaticamente pelos campos que você especificou na lista de discussão;
Tips: se você não precisar de um determinado campo neste momento, escolha uma opção em branco na lista suspensa.
2.2) Inserir espaço reservado (opcional): Se você precisar inserir informações variáveis ​​em um corpo de e-mail.
Por exemplo, você pode precisar enviar um email para vários destinatários com nome personalizado para cada um, você precisa colocar o cursor no corpo do email onde você precisa inserir o placeholder, selecione o campo “E: Nome” (ou outro campo de nome em sua lista de e-mails) e clique no botão Inserir espaço reservado botão;
Quando os destinatários recebem o email, o corpo do email permanece o mesmo, mas os nomes são exclusivos para cada um.
2.3) Componha o corpo do e-mail conforme sua necessidade;
2.4) Certifique-se de que o Envie e-mails via Outlook a caixa está marcada;
2.5) Clique no ENVIAR botão. Veja a imagem:

3. Então um Kutools for Excel caixa de diálogo aparece para informar quantos e-mails são enviados, clique no OK para fechar esta caixa de diálogo.

Tips: Você pode ir para o Itens enviados pasta no seu Outlook para verificar os e-mails que você enviou.


5.3 Envie e-mails facilmente com corpo HTML (incluindo hiperlink, imagem, etc.)

Este recurso de envio de e-mails permite que você crie um e-mail html, que inclui hiperlink, imagem, diferentes tamanhos de fonte e cores de fonte, etc.

Depois de criando uma lista de e-mail que inclui os campos de e-mail que você precisa,

Quando você configurar a caixa de diálogo Enviar e-mails, você pode tornar o conteúdo do corpo rico 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, demonstramos um código VBA para ajudá-lo a enviar emails com a assinatura padrão do Outlook. Aqui com o recurso Enviar e-mails, você só precisa marcar uma opção, então a assinatura padrão do Outlook será inserida nos e-mails que você enviou do Excel.

Depois de criando uma lista de e-mail que inclui os campos de e-mail que você precisa,

Quando configurar a caixa de diálogo Enviar e-mails, você precisa clicar Opções > Use as configurações de assinatura do Outlook.

Note: Verifique se há uma marca de seleção exibida antes da opção Usar as configurações de assinatura do Outlook.

Quando os destinatários recebem o email, eles podem ver a assinatura padrão do Outlook exibida no final do corpo do email.


5.5 Envie e-mails facilmente de uma conta de e-mail especificada

Para usar uma determinada conta de e-mail para enviar os e-mails do Excel em vez de usar a conta padrão, o recurso Enviar e-mails também pode ajudar a fazer isso facilmente.

Depois de criando uma lista de e-mail que inclui os campos de e-mail que você precisa,

Quando configurar a caixa de diálogo Enviar e-mails, você precisa clicar Opções > Enviado dee clique na conta de e-mail da qual você deseja enviar e-mails.

Note: Depois de selecionar a conta de e-mail, uma marca de seleção será exibida antes dela.

Clique SUA PARTICIPAÇÃO FAZ A DIFERENÇA para saber mais sobre este recurso Enviar e-mails.

  Se você quiser ter um teste gratuito (30 dias) deste utilitário, por favor clique para fazer o downloade, em seguida, aplique a operação de acordo com as etapas acima.

Concluindo, enviar e-mails do Excel é bastante útil em nosso trabalho diário. Este artigo aborda tópicos mais abrangentes de envio de emails do Excel, se houver outros tópicos ou soluções mais fáceis, deixe um comentário para me informar.

Melhores ferramentas de produtividade de escritório

🤖 Assistente de IA do Kutools: Revolucionar a análise de dados com base em: Execução Inteligente   |  Gerar Código  |  Crie fórmulas personalizadas  |  Analise dados e gere gráficos  |  Invocar funções do Kutools...
Recursos mais comuns: Encontre, destaque ou identifique duplicatas   |  Excluir linhas em branco   |  Combine colunas ou células sem perder dados   |   Rodada sem Fórmula ...
Super pesquisa: VLookup de múltiplos critérios    VLookup de múltiplos valores  |   VLookup em várias planilhas   |   Pesquisa Difusa ....
Lista suspensa avançada: Crie rapidamente uma lista suspensa   |  Lista suspensa de dependentes   |  Lista suspensa de seleção múltipla ....
Gerenciador de colunas: Adicione um número específico de colunas  |  Mover colunas  |  Alternar status de visibilidade de colunas ocultas  |  Compare intervalos e colunas ...
Recursos em destaque: Foco da Grade   |  Vista de Design   |   Grande Barra de Fórmula    Gerenciador de pastas de trabalho e planilhas   |  Biblioteca (Auto texto)   |  Data Picker   |  Combinar planilhas   |  Criptografar/Descriptografar Células    Enviar e-mails por lista   |  Super Filtro   |   Filtro Especial (filtro negrito/itálico/tachado...) ...
15 principais conjuntos de ferramentas12 Texto Ferramentas (Adicionar texto, Remover Personagens, ...)   |   50+ de cores Tipos (Gráfico de Gantt, ...)   |   Mais de 40 práticos Fórmulas (Calcule a idade com base no aniversário, ...)   |   19 Inclusão Ferramentas (Insira o código QR, Inserir imagem do caminho, ...)   |   12 Conversão Ferramentas (Números para Palavras, Conversão de moedas, ...)   |   7 Unir e dividir Ferramentas (Combinar linhas avançadas, Dividir células, ...)   |   ... e mais

Aprimore suas habilidades de Excel com o Kutools para Excel e experimente uma eficiência como nunca antes. Kutools para Excel oferece mais de 300 recursos avançados para aumentar a produtividade e economizar tempo.  Clique aqui para obter o recurso que você mais precisa...

Descrição


Office Tab traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
Comments (0)
No ratings yet. Be the first to rate!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations