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

Como enviar um gráfico específico em um email com vba no Excel?

Você pode saber como enviar um e-mail pelo Outlook no Excel com código VBA. No entanto, você sabe como anexar um gráfico específico em uma determinada planilha no corpo do e-mail? Este artigo mostrará a você o método para resolver esse problema.

Envie um gráfico específico em um e-mail no Excel com código VBA


Envie um gráfico específico em um e-mail no Excel com código VBA

Faça o seguinte para enviar um gráfico específico em um e-mail com o código VBA no Excel.

1. Na planilha que contém o gráfico que você deseja anexar ao corpo do e-mail, pressione 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, por favor clique inserção > Módulo. Em seguida, copie o código do VBA abaixo para a janela de código.

Código VBA: Envie um gráfico específico em um e-mail no Excel

Sub mailHTMLsend()
'Updated by Extendoffice 2018/3/5
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = Application.InputBox("Please enter the chart name:", "KuTools for Excel", , , , , , 2)
    If xChartName = "" Then Exit Sub
    Set xChart = Sheets("Sheet1").ChartObjects(xChartName) 'Change "Sheet1" to your worksheet name
    If xChart Is Nothing Then Exit Sub
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    xPath = "<p align='Left'><img src=" & "cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "xrr@163.com"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Nota: No código, altere o endereço de e-mail do destinatário e o assunto do e-mail na linha .To = "xrr@163.com" e linha .Subject = "Adicionar gráfico no corpo do correio do Outlook" , Sheet1 é a folha que contém o gráfico que deseja enviar, altere-o para o seu.

3. aperte o F5 chave para executar o código. Na abertura Kutools for Excel caixa de diálogo, digite o nome do gráfico que você anexará no corpo do e-mail e clique no botão OK botão. Veja a imagem:

Em seguida, um e-mail é criado automaticamente com o gráfico especificado mostrado no corpo do e-mail, conforme a captura de tela abaixo. Clique no botão Enviar para enviar este e-mail.


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 (13)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
quando insiro o nome do gráfico, o email não gera a caixa de diálogo apenas fecha, alguma ideia do que fiz de errado? Eu segui cada passo
Este comentário foi feito pelo moderador no site
O problema é que não podemos definir nomes para objetos de gráfico como tabelas. Você precisa passar o ID inteiro para funcionar. Por exemplo, se você tiver apenas 1 gráfico na "Planilha1", tente passar o valor 1 quando a msgbox aparecer.

PS: desculpe o inglês ruim :]
Este comentário foi feito pelo moderador no site
hola como puede enviar por correo, una tabla dinámica, y no un gráfico
Este comentário foi feito pelo moderador no site
Há erro no código: "\") + 1) & "" " largura=700 altura=50No texto em negrito o do meio deve ser uma única vírgula invertida

Este comentário foi feito pelo moderador no site
Inclui o gráfico como um anexo. Você tem alguma idéia de como incluí-lo como uma imagem no próprio corpo do e-mail. Obrigado, Youssef
Este comentário foi feito pelo moderador no site
Mesmo problema, alguma solução?
Este comentário foi feito pelo moderador no site
Oi J,
O código foi atualizado. Por favor, tente. Desculpe pela inconveniência.


Sub mailHTMLsend()
'Updated by Extendoffice 2018/3/5
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = Application.InputBox("Please enter the chart name:", "KuTools for Excel", , , , , , 2)
    If xChartName = "" Then Exit Sub
    Set xChart = Sheets("Sheet1").ChartObjects(xChartName) 'Change "Sheet1" to your worksheet name
    If xChart Is Nothing Then Exit Sub
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    xPath = "<p align='Left'><img src="/%20&%20"cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "xrr@163.com"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
Este comentário foi feito pelo moderador no site
Olá,
mi nic sie nie załącza, czy coś tutaj należałoby wpisać jeszcze?
xPath = "co tutaj trzeba wprowadzić?"
Este comentário foi feito pelo moderador no site
Olá Kuba,
Remova o / marcar em <img src="/.
O erro é causado pelo editor no site.
Desculpe o transtorno.
Este comentário foi feito pelo moderador no site
cześć, pełny kod działa tylko do momentu podglądu komunikatu, przy wysyłce adresat otrzymuje błąd i wykresu nie widać ("Nie można wyświetlić połączonego obrazu. Plik mógł zostać przeniesiony lub usunięty albo zmieniono jego nazwę. Sprawdź czy łącze wskazuje poprawny plik i lokazlizację.") Czy z Was też tak ktoś miał czy tylko u mnie taki zonk? Prosze o pomoc, tutaj kod, który dotyczy wykresum już tak mało brakuje :)

Dim xChartName As String
Dim xChartPath como String
Dim xPath como string
Dim xChart As ChartObject
On Error Resume Next
Dim wydzialy As String
wydzialy = lista.Cells(3, 75)
xChartName = Application.InputBox(wydzialy, "KuTools for Excel", , , , , , 2) 'Wykres1 '"Por favor, digite o nome do gráfico:"
Se xChartName = "" Então Exit Sub
Set xChart = Sheets("Wykresy").ChartObjects(xChartName) 'Alterar "Sheet1" para o nome da sua planilha
Se o xChart não for nada, saia do sub
xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".svg" '.bmp '.svg '.svg ma lepsza jakość
xCaminho = " "
xChart.Chart.Export xChartPath


Dim OutApp como objeto
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Definir OutMail = OutApp.CreateItem(0)
Com o OutMail
.Para = e-mails(b)
.CC = emails_dw(b)
.Assunto = "XXXX" ' - " & lista.Cells(i, 66)
.Anexos.Adicionar xChartPath
.HTMLBody = "treść" & xPath

Definir .SendUsingAccount = OutApp.Session.Accounts.Item(1)

.Exibição
Terminar com
Matar xChartPath
Definir OutMail = Nada
Set OutApp = Nada
Este comentário foi feito pelo moderador no site
Olá Kuba,
O código foi atualizado. O destinatário pode visualizar o gráfico normalmente. Por favor, tente.
Nota: No código, altere o "Gráfico 1" para o nome do seu próprio gráfico. E especifique o endereço de e-mail no campo Para.
Sub mailHTMLsend()
'Updated by Extendoffice 20221013
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xStartMsg As String
    Dim xEndMsg As String
    Dim xChartName 'As String
    Dim xChartPath As String
    Dim xPath As String
    Dim xChart As ChartObject
    On Error Resume Next
    xChartName = "Chart 1" 'The name of the chart in the current worksheet you want to send.
    If xChartName = "" Then Exit Sub
    Set xChart = Application.ActiveSheet.ChartObjects(xChartName)
    If xChart Is Nothing Then Exit Sub
    
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    
    xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
    xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
    xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".bmp"
    
    xPath = "<p align='Left'><img src="/%20&%20"cid:" & Mid(xChartPath, InStrRev(xChartPath, "\") + 1) & """  width=700 height=500 > <br> <br>"
    
    xChart.Chart.Export xChartPath
    With xOutMail
        .To = "Email Address"
        .Subject = "Add Chart in outlook mail body"
        .Attachments.Add xChartPath
        .HTMLBody = xStartMsg & xPath & xEndMsg
        .Display
    End With
    Kill xChartPath
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub
Este comentário foi feito pelo moderador no site
OLÁ, quero adicionar espaço no corpo da mensagem, qual palavra-chave devo usar.
Este comentário foi feito pelo moderador no site
Olá pavan chougule,
As duas linhas a seguir no código contêm o conteúdo do corpo do e-mail. Você pode modificar manualmente o corpo do e-mail pressionando a tecla de espaço no teclado para adicionar um espaço.
xStartMsg = "<font size='5' color='black'> Good Day," & "<br> <br>" & "Please find the chart below: " & "<br> <br> </font>"
xEndMsg = "<font size='4' color='black'> Many Thanks," & "<br> <br> </font>"
Não há comentários postados aqui ainda
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

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