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

Як надіслати електронне повідомлення, якщо в Excel натиснуто кнопку?

Припустимо, що вам потрібно надіслати електронну пошту через Outlook, натиснувши кнопку на аркуші Excel, як ви можете це зробити? У цій статті буде представлено метод VBA для детального його досягнення.

Надіслати електронний лист, якщо на кнопку натиснуто код VBA


Надіслати електронний лист, якщо на кнопку натиснуто код VBA

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

1. Вставте командну кнопку у свій аркуш, натиснувши Розробник > Insert > Кнопка керування (керування ActiveX). Дивіться знімок екрана:

2. Клацніть правою кнопкою миші на вставлену командну кнопку, а потім натисніть Переглянути код з меню правої кнопки миші, як показано на знімку екрана.

3. На відкритті Microsoft Visual Basic для додатків вікно, будь ласка, замініть оригінальний код у вікні коду таким сценарієм VBA.

Код VBA: Надіслати електронний лист, якщо в 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

примітки:

1). Будь ласка, змініть текст електронної пошти, як вам потрібно в xMailBody рядок у коді.

2). Замініть Адреса електронної пошти з адресою електронної пошти одержувача .To = "Адреса електронної пошти".

3). Вкажіть одержувачів копії та прихованої копії, як вам потрібно .CC = "" і .Bcc = "" розділи.

4). Змініть тему повідомлення в рядку .Subject = "Перевірити надсилання електронного листа натисканням кнопки".

4 Натисніть кнопку інший + Q клавіші одночасно, щоб закрити Microsoft Visual Basic для додатків вікна.

5. Вимкніть режим дизайну, клацнувши Розробник > Режим дизайну. Дивіться знімок екрана:

Відтепер кожного разу, коли ви натискаєте на кнопку команди, автоматично створюватиметься електронний лист із зазначеними одержувачами, темою та текстом. Будь ласка, надішліть електронне повідомлення, натиснувши Відправити кнопки.

примітки: Код VBA працює лише тоді, коли ви використовуєте Outlook як програму електронної пошти.

Легко надсилайте електронну пошту через Outlook на основі полів створеного списку розсилки в Excel:

повне г, повне г,, показали, від, номер, XNUMX Надіслати електронні листи корисність Kutools для Excel допомагає надсилати електронну пошту через Outlook на основі полів створеного списку розсилки в Excel.
Завантажте та спробуйте зараз! (30-денний безкоштовний маршрут)


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


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

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

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

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

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (67)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт, я хочу надіслати дані з даних зведеної таблиці, будь ласка, допоможіть
Цей коментар був мінімізований модератором на сайті
Чи можна написати сценарій так, щоб, коли ви натискаєте кнопку, він приєднувався до електронного листа, як вище, але також видаляв кнопку? щоб на копії файлу, який надсилається електронною поштою, більше не було кнопки?
Цей коментар був мінімізований модератором на сайті
Трохи нижче ".Body = xMailBody" додайте наступне
.Додатки.Додати ActiveWorkbook.FullName
Цей коментар був мінімізований модератором на сайті
Привіт Дені.

Я додав частину, як ви сказали, але в електронному листі з вкладеною книгою все ще є кнопки.
Цей коментар був мінімізований модератором на сайті
привіт чи можна налаштувати його так, щоб мені не доводилося натискати надіслати - він автоматично надсилає електронний лист????
Цей коментар був мінімізований модератором на сайті
привіт,
Будь ласка, замініть рядок .Display на .Send над кодом VBA.
Цей коментар був мінімізований модератором на сайті
він генерує лише одну електронну пошту й продовжуватиме перезаписувати вміст замість того, щоб відкривати множинні чернетки електронних листів.
Цей коментар був мінімізований модератором на сайті
Всім привіт, спочатку велике спасибі, ця публікація дуже корисна і працює для вкладення. Це працює для мене, але оновлення не зберігаються на аркуші, ви повинні натиснути кнопку зберегти. Я хотів би, щоб у вкладенні було те, що зараз є на аркуші Excel.

Я можу зробити це, використовуючи вбудовану функцію електронної пошти Excel, але мені потрібна була кнопка, оскільки мені потрібно жорстко закодувати конкретну адресу електронної пошти.

Отже, підсумовуючи, я хотів би знати:

Я хотів би знати, чи є спосіб: після того, як користувач відкриє книгу Excel і внесе зміни, чи буде кнопка зберегти вкладення з оновленнями?
Цей коментар був мінімізований модератором на сайті
Хороший день,
Код оптимізовано. Будь ласка, спробуйте і дякую за ваш коментар.

Приватна підкоманда CommandButton1_Click()
'Оновлено Extendoffice 2017 / 9 / 14
Зменшіть xOutApp як об’єкт
Змінити xOutMail як об’єкт
Заглушити xMailBody як рядок
On Error Resume Next
Встановіть xOutApp = CreateObject("Outlook.Application")
Встановити xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Save
xMailBody = "Вміст основного тексту" & vbNewLine & vbNewLine & _
"Це рядок 1" & vbNewLine & _
«Це рядок 2»
On Error Resume Next
За допомогою xOutMail
.To = "Адреса електронної пошти"
.CC = ""
.BCC = ""
.Subject = "Перевірити надсилання електронного листа натисканням кнопки"
.Body = xMailBody
.Додатки.Додати ActiveWorkbook.FullName
.Відобразити або використовувати .Send
Кінець з
При помилці GoTo 0
Встановіть xOutMail = Нічого
Встановіть xOutApp = Нічого
End Sub
Цей коментар був мінімізований модератором на сайті
Як я можу прикріпити активну робочу книгу до електронного листа, натиснувши кнопку?
Цей коментар був мінімізований модератором на сайті
Добрий день,
Трохи нижче ".Body = xMailBody" додайте наступне
.Додатки.Додати ActiveWorkbook.FullName
Цей коментар був мінімізований модератором на сайті
Teria como em vez de enviar a planilha, enviar as informações em imagem?
Цей коментар був мінімізований модератором на сайті
використовуючи цей код VBA, чи можу я посилатися на інформацію клітинки в тілі електронного листа? Наприклад, як я можу посилатися на значення клітинок до коду нижче?

xMailBody = "Вміст основного тексту" & vbNewLine & vbNewLine & _
"Це рядок 1" & vbNewLine & _
«Це рядок 2»

Також за допомогою коду (.TO = "адреса електронної пошти"). як я можу змусити "адресу електронної пошти" ввести адресу електронної пошти з клітинки в стовпці поруч з нею.


Спасибі,
Цей коментар був мінімізований модератором на сайті
Чи можна додати другу кнопку електронної пошти в той самий аркуш? Коли я намагаюся це зробити, він підключається до коду з початкової кнопки електронної пошти. Спасибі.
Цей коментар був мінімізований модератором на сайті
привіт,
Кожній кнопці потрібно призначити різні коди.
Цей коментар був мінімізований модератором на сайті
використовуючи цей код VBA, чи можу я посилатися на інформацію клітинки в тілі електронного листа? Наприклад, як я можу посилатися на значення клітинок до коду нижче?

xMailBody = "Вміст основного тексту" & vbNewLine & vbNewLine & _
"Це рядок 1" & vbNewLine & _
«Це рядок 2»

Спасибі,
Цей коментар був мінімізований модератором на сайті
Привіт, Гленн,
Будь ласка, застосуйте наступний код. Дякуємо за коментар.
xMailBody = [B5]
Цей коментар був мінімізований модератором на сайті
Чи можна замість того, щоб надсилати вкладення в електронному листі, надіслати гіперпосилання на файл (знаходиться в SharePoint)?
Цей коментар був мінімізований модератором на сайті
Привіт, Лорі,
Не можу допомогти вам у цьому. Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Чи можу я посилатися на значення в клітинці в темі за допомогою рядка? Якась варіація наведеного нижче?

.Subject = "Нова подія:" & Target.Address = "$B$38"
Цей коментар був мінімізований модератором на сайті
Привіт, Абі!
Будь ласка, змініть код на .Subject = "Нова подія:" & [B38].
Дякуємо за ваш коментар.
Цей коментар був мінімізований модератором на сайті
Привіт Там,
Чи може хтось допомогти мені щодо наступної вимоги?
У мене є аркуш Excel з двома спадними списками.

1 спадний список - список відділів

2 спадний список-категорія

Я хочу, коли я вибираю відділ і категорію зі списків; (наприклад, якщо я вибираю "продажі" у відділі та "місячний звіт" у категорії)

Мені потрібно надіслати PDF-версію цього робочого аркуша команді з продажу електронною поштою з темою електронного листа щомісячний звіт.

Якщо я виберу "виробництво" зі списку відділів, електронний лист має надійти групі людей у ​​виробництві.

Я вдячний, якщо ви можете допомогти мені в цьому

Расіке
Цей коментар був мінімізований модератором на сайті
Привіт, Расіке,
Вибачте, не можу вам з цим допомогти. Ласкаво просимо опублікувати будь-які запитання на нашому форумі: https://www.extendoffice.com/forum.html щоб отримати додаткову підтримку Excel від професіоналів Excel або інших шанувальників Excel.
Цей коментар був мінімізований модератором на сайті
привіт,

Як я можу змусити пошту автоматично додавати мій підпис із Outlook?
Цей коментар був мінімізований модератором на сайті
Привіт Джон,
Наведений нижче код VBA може допомогти вам вирішити проблему. Дякую за коментар.

Приватна підкоманда CommandButton1_Click()
'Оновлено Extendoffice 2019 / 6 / 26
Зменшіть xOutApp як об’єкт
Змінити xOutMail як об’єкт
On Error Resume Next
Встановіть xOutApp = CreateObject("Outlook.Application")
Встановити xOutMail = xOutApp.CreateItem(0)
За допомогою xOutMail
.Відобразити або використовувати .Send
.To = "Адреса електронної пошти"
.CC = ""
.BCC = ""
.Subject = "Перевірити надсилання електронного листа натисканням кнопки"
.HTMLBody = "Це тестовий електронний лист, який надсилається в Excel" & "
" & .HTMLBody
'.Надіслати
Кінець з
При помилці GoTo 0
Встановіть xOutMail = Нічого
Встановіть xOutApp = Нічого
End Sub
Цей коментар був мінімізований модератором на сайті
Чи потрібно бути користувачем Excel, коли натискаєте кнопку, щоб надіслати електронний лист? чи просто особа, яка отримує електронний лист, має бути користувачем Outlook?
Цей коментар був мінімізований модератором на сайті
Добрий день,
Оскільки повідомлення електронної пошти потрібно надіслати через Outlook після натискання кнопки в Excel, для його роботи необхідно встановити Outlook на вашому комп’ютері.
Цей коментар був мінімізований модератором на сайті
Я хочу надіслати робочий аркуш Excel електронною поштою, але він не надсилає його. Як написати код, щоб надіслати документ електронною поштою
Цей коментар був мінімізований модератором на сайті
Привіт Маркус,
Наведений нижче код VBA може допомогти вам вирішити проблему.

Sub SendWorkSheet()
'Оновлення 20190626
Dim xFile як рядок
Dim xFormat As Long
Dim Wb як робочий зошит
Dim Wb2 як робочий зошит
Помутніти шлях до файлу як рядок
Зменшити ім'я файлу як рядок
Приглушити OutlookApp як об’єкт
Потьмарити OutlookMail як об’єкт
On Error Resume Next
Application.ScreenUpdating = Невірний
Установіть Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Установіть Wb2 = Application.ActiveWorkbook
Виберіть Case Wb.FileFormat
Випадок xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Випадок xlOpenXMLWorkbookMacroEnabled:
Якщо Wb2.HasVBProject Тоді
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Ще
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Випадок Excel8:
xFile = ".xls"
xFormat = Excel8
Випадок xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Зараз, "dd-mmm-yy h-mm-ss")
Встановити OutlookApp = CreateObject("Outlook.Application")
Встановити OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
За допомогою OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "особливості kte"
.Body = "Будь ласка, перевірте та прочитайте цей документ."
.Додатки.Додати Wb2.FullName
Відображення
'.Надіслати
Кінець з
Wb2.Закрити
Вбийте FilePath & FileName & xFile
Встановіть OutlookMail = Нічого
Встановіть OutlookApp = Нічого
Application.ScreenUpdating = True
End Sub
Цей коментар був мінімізований модератором на сайті
Як я можу прикріпити активний аркуш до електронного листа, натиснувши кнопку?
Цей коментар був мінімізований модератором на сайті
Привіт, Грант!
Клацніть правою кнопкою миші та виберіть Переглянути код, а потім скопіюйте код нижче між рядками Private Sub та End Sub. Сподіваюся, що зможу допомогти. Дякую за коментар.

Dim xFile як рядок
Dim xFormat As Long
Dim Wb як робочий зошит
Dim Wb2 як робочий зошит
Помутніти шлях до файлу як рядок
Зменшити ім'я файлу як рядок
Приглушити OutlookApp як об’єкт
Потьмарити OutlookMail як об’єкт
On Error Resume Next
Application.ScreenUpdating = Невірний
Установіть Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Установіть Wb2 = Application.ActiveWorkbook
Виберіть Case Wb.FileFormat
Випадок xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Випадок xlOpenXMLWorkbookMacroEnabled:
Якщо Wb2.HasVBProject Тоді
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Ще
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Випадок Excel8:
xFile = ".xls"
xFormat = Excel8
Випадок xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Зараз, "dd-mmm-yy h-mm-ss")
Встановити OutlookApp = CreateObject("Outlook.Application")
Встановити OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
За допомогою OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "особливості kte"
.Body = "Будь ласка, перевірте та прочитайте цей документ."
.Додатки.Додати Wb2.FullName
Відображення
'.Надіслати
Кінець з
Wb2.Закрити
Вбийте FilePath & FileName & xFile
Встановіть OutlookMail = Нічого
Встановіть OutlookApp = Нічого
Application.ScreenUpdating = True
Цей коментар був мінімізований модератором на сайті
привіт,

Чи є спосіб змінити назву файлу на поточну дату, коли він вкладається в електронний лист?
Цей коментар був мінімізований модератором на сайті
привіт,

Я працював над аркушем, але не можу закінчити. Сподіваюся, ви можете мені допомогти :)

Сам файл має бути xltm (шаблон), і він сам повинен прикріпити аркуш до листа.

І автопідпис, тоді я був би дуже радий.

Наперед дякую /Dr. Нанг
Цей коментар був мінімізований модератором на сайті
Привіт, я запускаю електронну таблицю з 80 індивідуальними рахунками барів і дуже успішно використовую код VBA на цій сторінці. Однак у тілі листа я хотів би скопіювати та вставити певний діапазон клітинок облікового запису під час надсилання, щоб клієнт міг мати історію. Чи можете ви допомогти з кодом VBA для цього?
Цей коментар був мінімізований модератором на сайті
Привіт! Щиро дякую за це. Це була фантастична допомога.

Чи можна надіслати активний робочий аркуш, натиснувши кнопку замість повної книги?

Спасибо!
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця