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

如何在Excel中使用vba在電子郵件中發送特定圖表?

您可能知道如何通過帶有VBA代碼的Excel在Outlook中發送電子郵件。 但是,您知道如何將特定工作表中的特定圖表附加到電子郵件正文中嗎? 本文將向您展示解決此問題的方法。

使用VBA代碼在Excel中通過電子郵件發送特定圖表


使用VBA代碼在Excel中通過電子郵件發送特定圖表

請執行以下操作,以在Excel中通過VBA代碼在電子郵件中發送特定圖表。

1.在工作表中包含要附加到電子郵件正文中的圖表,請按 其他 + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 在裡面 Microsoft Visual Basic for Applications 窗口,請點擊 插入 > 模塊。 然後將下面的VBA代碼複製到“代碼”窗口中。

VBA代碼:在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

備註:在代碼中,請更改收件人的電子郵件地址和相應的電子郵件主題 .To =“ xrr@163.com” 和行 .Subject =“在Outlook郵件正文中添加圖表” , Sheet1 是包含您要發送的圖表的表格,請更改為您自己的圖表。

3。 按 F5 鍵來運行代碼。 在開幕 Excel的Kutools 對話框,輸入您將在電子郵件正文中附加的圖表的名稱,然後單擊 OK 按鈕。 看截圖:

然後會自動創建一封電子郵件,並在電子郵件正文中顯示指定的圖表,如下圖所示。 請單擊發送按鈕發送此電子郵件。


相關文章:

 

 

 


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部

 

 

按評論排序
留言 (13)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
當我輸入圖表名稱時,郵件不會生成對話框,只是關閉,知道我做錯了什麼嗎? 我已經按照每一步
網站主持人對此評論進行了最小化
問題是我們無法為圖表對象(如表格)設置名稱。 您需要傳遞整數 ID 才能工作。 例如,如果您在“Sheet1”中只有 1 個圖表,請嘗試在 msgbox 出現時傳遞值 1。

PS:抱歉英語不好:]
網站主持人對此評論進行了最小化
Hola como puede enviar por correo, una tabla dinámica, y no un gráfico
網站主持人對此評論進行了最小化
代碼中有錯誤:"\") + 1) & “”“ 寬度=700 高度=50在粗體文本中間的應該是一個單引號

網站主持人對此評論進行了最小化
它包括作為附件的圖表。 您是否知道如何將其作為圖片包含在郵件正文中。 謝謝你,優素福
網站主持人對此評論進行了最小化
同樣的問題,有解決辦法嗎?
網站主持人對此評論進行了最小化
嗨,J,
代碼已更新。 請試一試。 帶來不便敬請諒解。


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
網站主持人對此評論進行了最小化
你好,
mi nic sie nie załącza, czy coś tutaj należałoby wpisać jeszcze?
xPath = "co tutaj trzeba wprowadzić?"
網站主持人對此評論進行了最小化
嗨庫巴,
請刪除 / 標記 <img src="/.
該錯誤是由站點中的編輯器引起的。
很抱歉給您帶來不便。
網站主持人對此評論進行了最小化
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 是 też tak ktoś miał czy tylko u mnie taki zonk 嗎? Prosze o pomoc, tutaj kod, który dotyczy wykresum już tak mało brakuje :)

將 xChartName 調暗為字符串
將 xChartPath 調暗為字符串
將 xPath 調暗為字符串
將 xChart 調暗為 ChartObject
在錯誤恢復下一頁
將 wydzialy 調暗為字符串
wydzialy = lista.Cells(3, 75)
xChartName = Application.InputBox(wydzialy, "KuTools for Excel", , , , , , 2) 'Wykres1 '"請輸入圖表名稱:"
如果 xChartName = "" 則退出 Sub
Set xChart = Sheets("Wykresy").ChartObjects(xChartName) '將“Sheet1”更改為您的工作表名稱
如果 xChart 什麼都不是,則退出 Sub
xChartPath = Application.ActiveWorkbook.Path & "\" & Environ("USERNAME") & VBA.Format(VBA.Now(), "DD_MM_YY_HH_MM_SS") & ".svg" '.bmp '.svg '.svg ma lepsza jakość
x路徑 = " “
xChart.Chart.Export xChartPath


將 OutApp 調暗為對象
將 OutMail 作為對像變暗
設置 OutApp = CreateObject("Outlook.Application")
設置 OutMail = OutApp.CreateItem(0)
隨著OutMail
.To = 電子郵件(b)
.CC = emails_dw(b)
.Subject = "XXXX" ' - " & lista.Cells(i, 66)
.Attachments.Add xChartPath
.HTMLBody = "treść" & xPath

設置 .SendUsingAccount = OutApp.Session.Accounts.Item(1)

。顯示
結束
殺死 xChartPath
設置 OutMail = 無
設置 OutApp = 無
網站主持人對此評論進行了最小化
嗨庫巴,
代碼已更新。 收件人可以正常查看圖表。 請試一試。
備註:在代碼中,請更改“圖1" 到您自己的圖表名稱。並在“收件人”字段中指定電子郵件地址。
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
網站主持人對此評論進行了最小化
您好,我想在郵件正文中添加空格,我應該使用哪個關鍵字。
網站主持人對此評論進行了最小化
嗨 pavan chougule,
代碼中的以下兩行包含電子郵件正文內容。 您可以通過按鍵盤上的空格鍵添加空格來手動修改電子郵件正文。
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>"
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護