Note: The other languages of the website are Google-translated. Back to English

Como enviar e-mail se o botão for clicado no Excel?

Supondo que você precise enviar e-mail pelo Outlook clicando em um botão na planilha do Excel, como pode fazer? Este artigo apresentará um método VBA para obtê-lo em detalhes.

Enviar e-mail se o botão for clicado com o código VBA


Enviar e-mail se o botão for clicado com o código VBA

Faça o seguinte para enviar um e-mail pelo Outlook se um botão de comando for clicado na pasta de trabalho do Excel.

1. Insira um botão de comando em sua planilha clicando em Desenvolvedor > inserção > Botão de comando (controle ActiveX). Veja a imagem:

2. Clique com o botão direito do mouse no botão de comando inserido e clique em Ver código no menu do botão direito como mostra a captura de tela abaixo.

3. Na abertura Microsoft Visual Basic para Aplicações janela, substitua o código original na janela Código com o seguinte script VBA.

Código VBA: Enviar e-mail se o botão for clicado no Excel

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Notas:

1). Altere o corpo do e-mail conforme necessário no xMailBody linha no código.

2). Substitua o Email com o endereço de e-mail do destinatário alinhado .To = "Endereço de e-mail".

3). Especifique os destinatários Cc e Bcc conforme necessário em .CC = “” e .Bcc = “” .

4). Altere o assunto do e-mail na linha .Subject = "Enviar email de teste clicando no botão".

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

5. Desative o modo de design clicando em Desenvolvedor > Modo de design. Veja a imagem:

A partir de agora, cada vez que você clicar no Botão de Comando, um e-mail será criado automaticamente com destinatários, assunto e corpo especificados. Envie o e-mail clicando no ENVIAR botão.

Anote os: O código VBA só funciona quando você usa o Outlook como seu programa de e-mail.

Envie e-mails facilmente pelo Outlook com base nos campos da lista de e-mails criada no Excel:

O Mande emails utilidade de Kutools for Excel ajuda a enviar e-mail através do Outlook com base nos campos da lista de discussão criada no Excel.
Baixe e experimente agora! (30-dia de trilha livre)


Artigos relacionados:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office 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!
parte inferior da aba do escritório
Comentários (73)
Avaliado 3.5 fora do 5 · classificações 1
Este comentário foi feito pelo moderador no site
Oi, eu estou olhando para enviar dados de uma tabela dinâmica de dados, você pode por favor me ajudar
Este comentário foi feito pelo moderador no site
É possível escrever o script para que, quando você clicar no botão, ele se anexe ao e-mail como acima, mas remova o botão também? para que a cópia do arquivo que está sendo enviado por e-mail não tenha mais o botão?
Este comentário foi feito pelo moderador no site
Logo abaixo de ".Body = xMailBody" adicione o seguinte
.Attachments.Add ActiveWorkbook.FullName
Este comentário foi feito pelo moderador no site
Olá Dani.

Eu adicionei a parte como você disse, mas o e-mail com a pasta de trabalho anexada ainda tem os botões.
Este comentário foi feito pelo moderador no site
oi, é possível configurá-lo para que eu não precise pressionar enviar - ele envia o e-mail automaticamente?
Este comentário foi feito pelo moderador no site
Oi,
Por favor, substitua a linha .Display por .Send no código VBA acima.
Este comentário foi feito pelo moderador no site
ele gera apenas um e-mail e continuará sobrescrevendo o conteúdo em vez de abrir vários rascunhos de e-mail.
Este comentário foi feito pelo moderador no site
Olá a todos, primeiro um grande obrigado, este post é muito útil e funciona para o anexo. Isso funciona para mim, mas nenhuma atualização é salva na planilha, você precisa clicar no botão salvar. Gostaria que o anexo tivesse o que está atualmente na planilha do Excel.

Eu posso fazer isso usando o recurso de e-mail embutido no Excel, mas eu queria um botão, pois preciso codificar o endereço de e-mail específico.

Então resumindo gostaria de saber:

Gostaria de saber se existe uma forma de: após um usuário abrir a pasta de trabalho do excel e fazer edições se o botão vai manter o anexo com as atualizações?
Este comentário foi feito pelo moderador no site
Bom dia,
O código foi otimizado. Por favor, tente e obrigado pelo seu comentário.

Sub CommandButton1_Click () particular
'Atualizado por Extendoffice 2017/9/14
Dim xOutApp como objeto
Dim xOutMail como objeto
Dim xMailBody As String
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Definir xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Save
xMailBody = "Conteúdo do corpo" & vbNewLine & vbNewLine & _
"Esta é a linha 1" & vbNewLine & _
"Esta é a linha 2"
On Error Resume Next
Com xOutMail
.To = "Endereço de e-mail"
.CC = ""
.BCC = ""
.Subject = "Enviar email de teste clicando no botão"
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Exiba 'ou use .Enviar
Terminar com
Em erro GoTo 0
Definir xOutMail = Nada
Definir xOutApp = Nada
End Sub
Este comentário foi feito pelo moderador no site
Como posso anexar a Pasta de Trabalho Ativa ao e-mail quando pressiono o botão?
Este comentário foi feito pelo moderador no site
Dia bom,
Logo abaixo de ".Body = xMailBody" adicione o seguinte
.Attachments.Add ActiveWorkbook.FullName
Este comentário foi feito pelo moderador no site
Teria como em vez de enviar uma planilha, enviar as informações em imagem?
Este comentário foi feito pelo moderador no site
usando este código VBA, posso referenciar informações de células no corpo do e-mail? Por exemplo, como eu referenciaria valores de células para o código abaixo?

xMailBody = "Conteúdo do corpo" & vbNewLine & vbNewLine & _
"Esta é a linha 1" & vbNewLine & _
"Esta é a linha 2"

Além disso, usando o código (.TO = "endereço de e-mail"). como posso fazer com que o "endereço de e-mail" puxe um endereço de e-mail de uma célula na coluna ao lado dele.


Obrigado,
Este comentário foi feito pelo moderador no site
É possível adicionar um segundo botão de email dentro da mesma planilha? Quando tento fazer isso, ele está se conectando ao código do botão de e-mail original. obrigado.
Este comentário foi feito pelo moderador no site
Oi,
Você precisa atribuir códigos diferentes a cada botão.
Este comentário foi feito pelo moderador no site
usando este código VBA, posso referenciar informações de células no corpo do e-mail? Por exemplo, como eu referenciaria valores de células para o código abaixo?

xMailBody = "Conteúdo do corpo" & vbNewLine & vbNewLine & _
"Esta é a linha 1" & vbNewLine & _
"Esta é a linha 2"

Obrigado,
Este comentário foi feito pelo moderador no site
Oi Glenn,
Por favor, aplique o seguinte código. Obrigado pelo seu comentário.
xCorpoCorreio = [B5]
Este comentário foi feito pelo moderador no site
É possível, em vez de enviar o anexo no email, enviar um hiperlink para o arquivo (localizado no SharePoint)?
Este comentário foi feito pelo moderador no site
Oi Laurie,
Não posso ajudá-lo com isso. Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Posso referenciar o valor em uma célula no assunto com string? Alguma variação do abaixo?

.Subject = "Novo evento:" & Target.Address = "$B$38"
Este comentário foi feito pelo moderador no site
Oi abi,
Por favor, altere o código para .Subject = "New Event:" & [B38].
Obrigado pelo seu comentário.
Este comentário foi feito pelo moderador no site
Oi lá,
Alguém poderia me ajudar no seguinte requisito?
Eu tenho uma planilha do Excel com duas listas suspensas.

1 lista suspensa - lista de departamentos

2 lista suspensa - categoria

O que eu quero é quando seleciono um departamento e uma categoria nas listas; (por exemplo, se eu selecionar "vendas" no departamento e "relatório mensal" na categoria)

Preciso enviar por e-mail a versão em PDF dessa planilha para a equipe de vendas com o assunto do e-mail é o relatório mensal.

Se eu selecionar "produção" na lista de departamentos, o email deve ir para um grupo de pessoas na produção.

Agradeço se puder me ajudar nisso

Rasike
Este comentário foi feito pelo moderador no site
Olá Rasik,
Desculpe não poder ajudá-lo com isso. Bem-vindo a postar qualquer pergunta em nosso fórum: https://www.extendoffice.com/forum.html para obter mais suporte do Excel de profissionais do Excel ou de outros fãs do Excel.
Este comentário foi feito pelo moderador no site
Oi,

Como posso obter o e-mail para adicionar automaticamente minha assinatura do Outlook?
Este comentário foi feito pelo moderador no site
Oi João,
O código VBA abaixo pode ajudá-lo a resolver o problema. Obrigado por seu comentário.

Sub CommandButton1_Click () particular
'Atualizado por Extendoffice 2019/6/26
Dim xOutApp como objeto
Dim xOutMail como objeto
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Definir xOutMail = xOutApp.CreateItem(0)
Com xOutMail
.Exiba 'ou use .Enviar
.To = "Endereço de e-mail"
.CC = ""
.BCC = ""
.Subject = "Enviar email de teste clicando no botão"
.HTMLBody = "Este é um e-mail de teste enviado em Excel" & "
" & .HTMLBody
'.Mandar
Terminar com
Em erro GoTo 0
Definir xOutMail = Nada
Definir xOutApp = Nada
End Sub
Este comentário foi feito pelo moderador no site
Você precisa ser um usuário do Excel ao apertar o botão para enviar um e-mail? ou apenas a pessoa que recebe o email tem que ser um usuário do Outlook?
Este comentário foi feito pelo moderador no site
Dia bom,
Como o email precisa ser enviado pelo Outlook após clicar no botão no Excel, você deve ter o Outlook instalado em seu computador para que funcione.
Este comentário foi feito pelo moderador no site
Quero enviar a planilha do excel no e-mail mas não envia. Como você escreve código para enviar documento como e-mail
Este comentário foi feito pelo moderador no site
Olá Marcus,
O código VBA abaixo pode ajudá-lo a resolver o problema.

Sub EnviarPlanilha()
'Atualizar 20190626
Dim xArquivo como String
Dim xFormat por muito tempo
Dim Wb como pasta de trabalho
Dim Wb2 como pasta de trabalho
Dim FilePath como String
Dim FileName As String
Dim OutlookApp como objeto
Dim OutlookMail como objeto
On Error Resume Next
Application.ScreenUpdating = False
Definir Wb = Application.ActiveWorkbook
ActiveSheet.Copiar
Definir Wb2 = Application.ActiveWorkbook
Selecionar caso Wb.FileFormat
Caso xlOpenXMLWorkbook:
xArquivo = ".xlsx"
xFormat = xlOpenXMLWorkbook
Caso xlOpenXMLWorkbookMacroEnabled:
Se Wb2.HasVBProject Então
xArquivo = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Outro
xArquivo = ".xlsx"
xFormat = xlOpenXMLWorkbook
Se acabar
Caso Excel8:
xArquivo = ".xls"
xFormato = Excel8
Caso xlExcel12:
xArquivo = ".xlsb"
xFormato = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Agora, "dd-mmm-aa h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Definir OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Com Outlook Mail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "recursos kte"
.Body = "Por favor, verifique e leia este documento."
.Anexos.Adicionar Wb2.FullName
.Exibição
'.Mandar
Terminar com
Wb2.Fechar
Matar FilePath & FileName & xFile
Definir OutlookMail = Nada
Definir OutlookApp = Nada
Application.ScreenUpdating = True
End Sub
Este comentário foi feito pelo moderador no site
Como posso anexar a Planilha Ativa ao e-mail quando pressiono o botão?
Este comentário foi feito pelo moderador no site
Oi Grant,
Por favor, clique com o botão direito do mouse no botão e selecione View Code, então copie o código abaixo entre as linhas Private Sub e End Sub. Espero que eu possa ajudar. Obrigado por seu comentário.

Dim xArquivo como String
Dim xFormat por muito tempo
Dim Wb como pasta de trabalho
Dim Wb2 como pasta de trabalho
Dim FilePath como String
Dim FileName As String
Dim OutlookApp como objeto
Dim OutlookMail como objeto
On Error Resume Next
Application.ScreenUpdating = False
Definir Wb = Application.ActiveWorkbook
ActiveSheet.Copiar
Definir Wb2 = Application.ActiveWorkbook
Selecionar caso Wb.FileFormat
Caso xlOpenXMLWorkbook:
xArquivo = ".xlsx"
xFormat = xlOpenXMLWorkbook
Caso xlOpenXMLWorkbookMacroEnabled:
Se Wb2.HasVBProject Então
xArquivo = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Outro
xArquivo = ".xlsx"
xFormat = xlOpenXMLWorkbook
Se acabar
Caso Excel8:
xArquivo = ".xls"
xFormato = Excel8
Caso xlExcel12:
xArquivo = ".xlsb"
xFormato = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Agora, "dd-mmm-aa h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Definir OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Com Outlook Mail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "recursos kte"
.Body = "Por favor, verifique e leia este documento."
.Anexos.Adicionar Wb2.FullName
.Exibição
'.Mandar
Terminar com
Wb2.Fechar
Matar FilePath & FileName & xFile
Definir OutlookMail = Nada
Definir OutlookApp = Nada
Application.ScreenUpdating = True
Este comentário foi feito pelo moderador no site
Oi,

Existe uma maneira de alterar o nome do arquivo para a data atual quando ele é anexado ao e-mail?
Este comentário foi feito pelo moderador no site
Oi,

Estou trabalhando em uma folha, mas não consigo terminá-la. espero que possa me ajudar :)

O arquivo próprio deve ser um xltm (template) e deve anexar a própria folha no correio.

E uma assinatura automática, então eu ficaria muito feliz.

Obrigado antecipadamente /Dr. Nang
Este comentário foi feito pelo moderador no site
Oi, eu executo uma planilha com 80 contas de bar individuais e usei o código VBA nesta página com muito sucesso. Porém no corpo do email gostaria de copiar e colar o intervalo específico de células de uma conta ao enviar para que o cliente possa ter um histórico. Você pode ajudar com o código VBA para isso?
Este comentário foi feito pelo moderador no site
Oi! Muito obrigado por isso. Tem sido uma ajuda fantástica.

É possível enviar uma planilha ativa pressionando um botão em vez da pasta de trabalho completa?

Obrigado!
Não há comentários postados aqui ainda
carregar mais

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL