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

Як надіслати певну діаграму в електронному листі за допомогою vba в Excel?

Можливо, ви знаєте, як надіслати електронне повідомлення через Outlook в Excel із кодом VBA. Однак чи знаєте ви, як прикріпити конкретну діаграму на певному аркуші до тіла електронного листа? Ця стаття покаже вам спосіб вирішення цієї проблеми.

Надішліть конкретну діаграму електронною поштою в Excel із кодом VBA


Надішліть конкретну діаграму електронною поштою в Excel із кодом VBA

Будь ласка, виконайте наступні дії, щоб надіслати певну діаграму електронним листом із кодом VBA в Excel.

1. На робочому аркуші міститься діаграма, яку ви хочете вкласти в тіло електронної пошти, натисніть клавішу інший + F11 ключі, щоб відкрити Microsoft Visual Basic для додатків вікна.

2 В Microsoft Visual Basic для додатків вікно, натисніть Insert > Модулі. Потім скопіюйте код 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 клавіша для запуску коду. На відкритті Kutools for Excel діалогове вікно, введіть назву діаграми, яку ви вкладете, в тіло електронної пошти, а потім клацніть на OK кнопку. Дивіться знімок екрана:

Потім електронне повідомлення створюється автоматично із зазначеною діаграмою, яка відображається в тілі електронної пошти, як показано на знімку екрана нижче. Натисніть кнопку Надіслати, щоб надіслати цей електронний лист.


Статті по темі:

 

 

 


Найкращі інструменти для підвищення продуктивності офісу

Kutools for Excel Вирішує більшість ваших проблем і підвищує вашу продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2021 і 365. Підтримує всі мови. Легке розгортання на вашому підприємстві чи в організації. 30-денна безкоштовна пробна версія повних функцій. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці

 

 

Коментарі (13)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
коли я вводжу назву діаграми, пошта не створює діалогове вікно просто закривається, уявляєте, що я зробив неправильно? Я стежив за кожним кроком
Цей коментар був мінімізований модератором на сайті
Проблема в тому, що ми не можемо встановити імена для об’єктів діаграм, як-от таблиці. Для роботи потрібно передати цілочисельний ідентифікатор. Наприклад, якщо у вас є лише 1 діаграма в "Аркуші1", спробуйте передати значення 1, коли з'явиться поле повідомлення.

PS: вибачте за погану англійську :]
Цей коментар був мінімізований модератором на сайті
hola como puede enviar por correo, una tabla dinámica, y no un grafico
Цей коментар був мінімізований модератором на сайті
У коді є помилка: "\") + 1) & "" " width=700 height=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 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 як рядок
Розменшувати xChartPath як рядок
Dim xPath як рядок
Зменшити xChart як ChartObject
On Error Resume Next
Dim wydzialy As String
wydzialy = lista.Cells(3, 75)
xChartName = Application.InputBox(wydzialy, "KuTools for Excel", , , , , , 2) 'Wykres1 '"Please enter the chart name:"
Якщо 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ść
xPath = " "
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)
.Додатки.Додати 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
Цей коментар був мінімізований модератором на сайті
ПРИВІТ, я хочу додати простір у тілі листа, яке ключове слово слід використовувати.
Цей коментар був мінімізований модератором на сайті
Привіт, Паван Чугуле,
Наступні два рядки коду містять вміст основного листа електронної пошти. Ви можете вручну змінити текст електронної пошти, натиснувши клавішу пробілу на клавіатурі, щоб додати пробіл.
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>"
There are no comments posted here yet

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL