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

Как отправить электронное письмо, если в Excel нажата кнопка?

Предположим, вам нужно отправить электронную почту через Outlook, нажав кнопку на листе Excel, как вы можете это сделать? В этой статье будет подробно представлен метод VBA для достижения этой цели.

Отправить электронное письмо, если нажата кнопка с кодом VBA


Отправить электронное письмо, если нажата кнопка с кодом VBA

Пожалуйста, сделайте следующее, чтобы отправить электронное письмо через Outlook, если в книге Excel нажата кнопка Command.

1. Вставьте командную кнопку на лист, нажав разработчик > Вставить > Командная кнопка (элемент управления 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). Заменить Ваш e-mail с адресом электронной почты получателя в строке .To = "Адрес электронной почты".

3). Укажите получателей Cc и Bcc по мере необходимости в .CC = "" и .Bcc = "" разделов.

4). Измените тему электронного письма в строке .Subject = "Тестовое письмо, отправленное нажатием кнопки".

4. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

5. Выключите режим дизайна, нажав разработчик > Режим проектирования. Смотрите скриншот:

С этого момента каждый раз, когда вы нажимаете на кнопку Command, автоматически создается электронное письмо с указанными получателями, темой и телом. Отправьте электронное письмо, нажав кнопку Отправить кнопку.

Внимание: Код VBA работает только при использовании Outlook в качестве почтовой программы.

С легкостью отправляйте электронную почту через Outlook на основе полей созданного списка рассылки в Excel:

Компания Отправить письма полезности Kutools for Excel помогает отправлять электронную почту через Outlook на основе полей созданного списка рассылки в Excel.
Скачайте и попробуйте прямо сейчас! (30-дневная бесплатная трасса)


Статьи по теме:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

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

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (73)
Номинальный 3.5 из 5 · рейтинги 1
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я хочу отправить данные из данных сводной таблицы, не могли бы вы помочь
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли написать скрипт, чтобы при нажатии кнопки он прикреплялся к письму, как указано выше, но также удалял кнопку? чтобы на копии отправляемого по электронной почте файла больше не было кнопки?
Этот комментарий был сведен к минимуму модератором на сайте
Чуть ниже ".Body = xMailBody" добавьте следующее
.Attachments.Add ActiveWorkbook.FullName
Этот комментарий был сведен к минимуму модератором на сайте
Привет Дэни.

Я добавил часть, как вы сказали, но электронное письмо с прикрепленной книгой все еще имеет кнопки.
Этот комментарий был сведен к минимуму модератором на сайте
привет, можно ли настроить его так, чтобы мне не нужно было нажимать "Отправить" - он автоматически отправляет письмо????
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Пожалуйста, замените строку .Display на .Send в приведенном выше коде VBA.
Этот комментарий был сведен к минимуму модератором на сайте
он генерирует только одно электронное письмо и будет перезаписывать содержимое вместо того, чтобы открывать несколько черновиков электронной почты.
Этот комментарий был сведен к минимуму модератором на сайте
Привет всем, во-первых, большое спасибо, этот пост очень полезен и работает для вложения. Это работает для меня, но на листе не сохраняются обновления, которые вы должны нажать на кнопку «Сохранить». Я хотел бы, чтобы вложение имело все, что в настоящее время находится на листе Excel.

Я могу сделать это, используя встроенную в Excel функцию электронной почты, но мне нужна кнопка, так как мне нужно жестко закодировать конкретный адрес электронной почты.

Итак, в целом, я хотел бы знать:

Я хотел бы знать, есть ли способ: после того, как пользователь откроет книгу Excel и внес изменения, сохранит ли кнопка вложение с обновлениями?
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Код был оптимизирован. Пожалуйста, попробуйте и спасибо за ваш комментарий.

Private Sub CommandButton1_Click ()
'Обновлено Extendoffice 2017/9/14
Dim xOutApp как объект
Dim xOutMail как объект
Dim 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
.Attachments.Add ActiveWorkbook.FullName
.Отобразить или использовать .Отправить
Конец с
По ошибке GoTo 0
Установите xOutMail = Ничего
Установите xOutApp = Ничего
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Как я могу прикрепить активную книгу к электронному письму, когда я нажимаю кнопку?
Этот комментарий был сведен к минимуму модератором на сайте
Добрый день,
Чуть ниже ".Body = xMailBody" добавьте следующее
.Attachments.Add ActiveWorkbook.FullName
Этот комментарий был сведен к минимуму модератором на сайте
Teria como em vez de enviar 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 = "New Event:" & [B38].
Спасибо за ваш комментарий.
Этот комментарий был сведен к минимуму модератором на сайте
Всем привет,
Может ли кто-нибудь помочь мне в следующем требовании?
У меня есть лист excel с двумя выпадающими списками.

1 выпадающий список- список отделов

2 раскрывающийся список-категория

Я хочу, когда я выбираю отдел и категорию из списков (например, если я выбираю «продажи» в отделе и «ежемесячный отчет» в категории)

Мне нужно отправить PDF-версию этого рабочего листа по электронной почте в отдел продаж с темой электронного письма «Ежемесячный отчет».

Если я выберу «производство» из списка отделов, электронное письмо должно быть отправлено группе людей, работающих в производстве.

Я ценю, если вы можете помочь мне в этом

Расике
Этот комментарий был сведен к минимуму модератором на сайте
Привет Расике,
Извините, не могу вам в этом помочь. Добро пожаловать, чтобы разместить любой вопрос на нашем форуме: https://www.extendoffice.com/forum.html чтобы получить дополнительную поддержку Excel от профессионалов Excel или других поклонников Excel.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Как я могу заставить почту автоматически добавлять мою подпись из Outlook?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Джон,
Приведенный ниже код VBA может помочь вам решить проблему. Спасибо за ваш комментарий.

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

Sub SendWorkSheet ()
'Обновление 20190626
Развернуть xFile как строку
Dim xFormat As Long
Dim Wb как рабочая книга
Dim Wb2 как рабочая тетрадь
Dim FilePath как строка
Dim FileName As String
Dim OutlookApp как объект
Dim OutlookMail как объект
On Error Resume Next
Приложение.ScreenUpdating = False
Установите Wb = Application.ActiveWorkbook
ActiveSheet.Копировать
Установите Wb2 = Application.ActiveWorkbook
Выберите регистр Wb.FileFormat.
Случай xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Случай xlOpenXMLWorkbookMacroEnabled:
Если Wb2.HasVBProject, то
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Еще
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Случай Excel8:
xFile = ".xls"
хФормат = Excel8
Случай xlExcel12:
xFile = ".xlsb"
хФормат = кслExcel12
End Select
FilePath = Environ $ ("temp") & "\"
FileName = Wb.Name & Format (теперь "дд-ммм-гг ч-мм-сс")
Установите 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 = "Пожалуйста, проверьте и прочтите этот документ."
.Attachments.Add Wb2.FullName
.Отображать
'.Отправлять
Конец с
Wb2.Закрыть
Убить FilePath & FileName & xFile
Установите OutlookMail = Nothing
Установите OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Как я могу прикрепить активный рабочий лист к электронному письму, когда я нажимаю кнопку?
Этот комментарий был сведен к минимуму модератором на сайте
Привет Грант,
Щелкните правой кнопкой мыши кнопку и выберите «Просмотреть код», затем скопируйте приведенный ниже код между строками Private Sub и End Sub. Надеюсь, я смогу помочь. Спасибо за ваш комментарий.

Развернуть xFile как строку
Dim xFormat As Long
Dim Wb как рабочая книга
Dim Wb2 как рабочая тетрадь
Dim FilePath как строка
Dim FileName As String
Dim OutlookApp как объект
Dim OutlookMail как объект
On Error Resume Next
Приложение.ScreenUpdating = False
Установите Wb = Application.ActiveWorkbook
ActiveSheet.Копировать
Установите Wb2 = Application.ActiveWorkbook
Выберите регистр Wb.FileFormat.
Случай xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Случай xlOpenXMLWorkbookMacroEnabled:
Если Wb2.HasVBProject, то
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Еще
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Случай Excel8:
xFile = ".xls"
хФормат = Excel8
Случай xlExcel12:
xFile = ".xlsb"
хФормат = кслExcel12
End Select
FilePath = Environ $ ("temp") & "\"
FileName = Wb.Name & Format (теперь "дд-ммм-гг ч-мм-сс")
Установите 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 = "Пожалуйста, проверьте и прочтите этот документ."
.Attachments.Add Wb2.FullName
.Отображать
'.Отправлять
Конец с
Wb2.Закрыть
Убить FilePath & FileName & xFile
Установите OutlookMail = Nothing
Установите OutlookApp = Nothing
Application.ScreenUpdating = True
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Есть ли способ изменить имя файла на текущую дату, когда он прикрепляется к электронной почте?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Я работаю над листом, но не могу его закончить. Я надеюсь, что вы можете мне помочь :)

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

И автоподпись, тогда я был бы очень рад.

Заранее спасибо /Dr. Нанг
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я запускаю электронную таблицу с 80 отдельными счетами бара и с большим успехом использовал код VBA на этой странице. Однако в теле письма я хотел бы скопировать и вставить определенный диапазон ячеек учетной записи при отправке, чтобы клиент мог иметь историю. Можете ли вы помочь с кодом VBA для этого?
Этот комментарий был сведен к минимуму модератором на сайте
Привет! Спасибо вам большое за это. Это была фантастическая помощь.

Можно ли отправить активный рабочий лист, нажав кнопку, вместо полной книги?

Благодаря!
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL