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

Как отправить / отправить по электронной почте диапазон ячеек через Outlook из Excel?

Вы когда-нибудь сталкивались с проблемой, что после завершения отчета на листе вам нужно отправить в диапазон ячеек на этом листе, которые содержат некоторые важные данные для вашего конкретного получателя. Есть ли какие-нибудь быстрые способы отправить этот диапазон по электронной почте из Excel, не открывая Outlook?

Отправить диапазон ячеек как вложение из Excel с кодом VBA

Отправить диапазон ячеек как тело из Excel с кодом VBA


стрелка синий правый пузырьОтправить диапазон ячеек как вложение из Excel с кодом VBA

Следующий код VBA может помочь вам отправить выбранный диапазон в виде вложения в Excel. Пожалуйста, сделайте так:

1. Откройте свою книгу и удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: отправить диапазон ячеек как вложение из Excel

Sub SendRange()
'Update 20131209
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "skyyang@extendoffice.com"
    .CC = ""
    .BCC = ""
    .Subject = "information of kte"
    .Body = "hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Внимание: В приведенном выше коде вы можете изменить следующую информацию по своему усмотрению.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "информация о kte"
  • .Body = "привет, пожалуйста, проверьте и прочтите этот документ."

3. Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится диалоговое окно, напоминающее вам о выборе диапазона, который вы хотите отправить. Смотрите скриншот:

doc-send-range1

4. Затем нажмите OK, и появится окно подсказки, после завершения индикатора выполнения щелкните Разрешить, а затем конкретный диапазон ячеек был отправлен получателю в виде вложения.

doc-send-range2


стрелка синий правый пузырьОтправить диапазон ячеек как тело из Excel с кодом VBA

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

Kutools for Excel, с более чем 120 удобные функции, облегчают вашу работу. 

1. Активируйте свой рабочий лист и удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.

2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.

Код VBA: отправить диапазон ячеек как тело из Excel

Sub EmailRange()
'Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
    .Introduction = "Please read this email."
    .Item.To = "skyyang@extendoffice.com"
    .Item.Subject = "information of kte"
    .Item.Send
End With
Application.ScreenUpdating = True
End Sub

Примечание: В приведенном выше коде вы можете изменить следующую информацию по своему усмотрению.

  • .Introduction = "Прочтите это письмо."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "информация о kte"

3. Затем нажмите F5 нажмите клавишу для запуска этого кода, и появится диалоговое окно с напоминанием о выборе диапазона, который вы хотите отправить.

doc-send-range1

4. Затем нажмите OK, и появится окно подсказки, после завершения индикатора выполнения щелкните Разрешить, а затем конкретный диапазон ячеек был отправлен вашему получателю в виде тела сообщения.

doc-send-range2

Ноты:

1. Эти коды доступны только при использовании Outlook в качестве почтовой программы.

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


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

Как отправить лист только через Outlook из Excel?

Как отправить текущую книгу через Outlook из Excel?


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

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

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

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

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (26)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Привет, я использую марку, которая выбирает ячейки, необходимые для отправки по электронной почте. я объединил это с другим макросом, чтобы я мог открыть «новое электронное письмо», моя проблема теперь в том, что если вы поместите много информации в одну ячейку, тогда потребуется только форма, которую вы просматриваете, не вся информация в этой ячейке какие-либо идеи ?? большое спасибо за вашу помощь с этим ура
Этот комментарий был сведен к минимуму модератором на сайте
всем привет
У меня есть проект, чтобы выбрать диапазон на листе 1 для отправки по электронной почте один за другим на многие адреса электронной почты, написанные на листе 2 в столбце A, и если столбец B пуст с определенной темой, и после отправки он пишет в столбце листа 2 b, отправленном
И ждать 10 секунд, чтобы отправить следующее письмо, как состояние сервера
Кто-нибудь поможет мне, пожалуйста?   
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Не могли бы вы сообщить мне, как добавить подпись и вторую строку введения в это письмо для второй программы. Заранее спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Красиво и полезно, молодец!!!
Этот комментарий был сведен к минимуму модератором на сайте
Очень полезный. Спасибо . У меня есть список адресов электронной почты на том же листе. Когда я щелкнул один адрес электронной почты, выбранный диапазон ячеек будет отправлен в виде вложения к этому электронному письму. Пожалуйста, помогите мне в этом? Большое спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Очень Красиво Объяснено. Вместо отправки новой книги мы можем только скопировать и вставить выбранный диапазон в тело электронной почты и отправить. Я не хочу отправлять выбранный диапазон как изображение. Я хочу отправить как табличное представление в теле письма. Можем ли мы это сделать??
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, это очень полезно, но что, если мне нужно добавить какое-то описание в тело письма перед его отправкой. Пожалуйста, предложите код.
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,
Все выглядит хорошо, но не дает границы выбранного диапазона, не могли бы вы предложить.
Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо, я так долго нахожу это решение.
Этот комментарий был сведен к минимуму модератором на сайте
Отличная работа. Было бы лучше, чтобы это было отправлено автоматически. Что делать, чтобы не выдавало ошибку перед возобновлением отправки?
Этот комментарий был сведен к минимуму модератором на сайте
Можем ли мы указать столько адресов электронной почты для отправки?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Кэри, все вышеперечисленные VBA могут добавлять множество адресов электронной почты (To, BCC, CC) для отправки с помощью ; как разделитель. Например, .To = "skyyang@extendoffice.com; тест1@extendoffice.com; тест2@extendoffice.com "
Этот комментарий был сведен к минимуму модератором на сайте
ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, сканируйте каждую копию и вставляйте в E-Mail einfügen. Как понять код VBA?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, у меня есть настроенная таблица, которую я хочу, чтобы персонал заполнил, а затем кнопку команды, которая затем автоматически сгенерирует электронное письмо, однако я хочу, чтобы данные из таблицы были в теле электронной почты. Есть код для этого? 
спасибо 
Этот комментарий был сведен к минимуму модератором на сайте
всем привет
У меня есть проект, чтобы выбрать диапазон на листе 1 для отправки по электронной почте один за другим на многие адреса электронной почты, написанные на листе 2 в столбце A, и если столбец B пуст с определенной темой, и после отправки он пишет в столбце листа 2 b, отправленном
И ждать 10 секунд, чтобы отправить следующее письмо, как состояние сервера
Кто-нибудь поможет мне, пожалуйста?   
Этот комментарий был сведен к минимуму модератором на сайте
всем привет
У меня есть проект, чтобы выбрать диапазон на листе 1 для отправки по электронной почте один за другим на многие адреса электронной почты, написанные на листе 2 в столбце A, и если столбец B пуст с определенной темой, и после отправки он пишет в столбце листа 2 b, отправленном
И ждать 10 секунд, чтобы отправить следующее письмо, как состояние сервера
Кто-нибудь поможет мне, пожалуйста?   
Этот комментарий был сведен к минимуму модератором на сайте
Привет, хриад, "если колонка B пуста с определенной темой и после отправки он пишет в листе 2 колонка b отправлено
И ждать 10 секунд, чтобы отправить следующее электронное письмо, как условие сервера "Я не понимаю этого. Пожалуйста, перескажите мне о вашем требовании.
Этот комментарий был сведен к минимуму модератором на сайте
Привет солнечный
прежде всего, спасибо за вашу помощь, так как сервер поставил условие не отправлять много писем за одну секунду, я хочу подождать 10 секунд после отправки первого письма и следующего.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, хриад, попробуйте приведенный ниже код, после его запуска появится диалоговое окно для выбора диапазона, который вы хотите отправить, затем он будет отправлен на адреса в столбце A листа 2 и с темами в столбце B. Каждые 10 секунд , отправить на один адрес. Вы можете изменить код «Пожалуйста, прочитайте это письмо» по своему усмотрению.
Sub SendEmailRange()

'ОбновитьExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV As Boolean

Dim xWSh как рабочий лист

Dim xCount как целое число

Dim xI как целое число

On Error Resume Next

xTitleId = "KutoolsforExcel"

'выбрать диапазон, который использовался для отправки в качестве тела

Установить WorkRng = Application.InputBox("Диапазон", xTitleId, Application.Selection.Address, , , , , 8)

Если WorkRng ничего не значит, выйдите из Sub
WorkRng.Активировать
WorkRng.Select

Установите xWSh = ActiveWorkbook.Worksheets("Sheet2") 'лист, который содержит адреса и темы

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Приложение.ScreenUpdating = False


Для xI = 1 To xCount

Если (xWSh.Range("A" & xI) = "") Тогда
Выход для
End If
ActiveWorkbook.EnvelopeVisible = Истина
С ActiveSheet.MailEnvelope
.Introduction = "Прочтите это письмо."

.Item.To = xWSh.Range("A" & xI)

.Item.Subject = xWSh.Range("B" & xI)

.Item.Send
Конец с
Если (xI = xCount) Тогда

Выход для

End If

Приложение. Подождите сейчас + TimeValue ("0:00:10")

Далее


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Этот комментарий был сведен к минимуму модератором на сайте
Привет солнечный
Большое спасибо за ваши усилия... Большое спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Можем ли мы установить фиксированные диапазоны? в макросе сам
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Мам плик с 6 аркузами. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Czy da się to podpiąć pod 5 przycisków?
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Пауэлл
Чтобы решить вашу проблему, приведенная ниже статья может помочь вам, пожалуйста, проверьте ее:

https://www.extendoffice.com/documents/excel/7178-send-each-sheet-to-different-email.html

Спасибо!
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо тебе за это! Как только вернусь из отпуска, проверю. Есть еще один вопрос. Есть проблема с запуском кодов vba с помощью кнопки Activex (вообще никаких действий), даже если код отлично работает в режиме редактирования или при запуске с помощью Ctrl + выбранная кнопка на клавиатуре. Я только начинаю путешествие с vba и у меня нет
подскажите что я делаю не так :/
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Пауэлл
Вам просто нужно скопировать код и вставить в Microsoft Visual Basic для приложений окно, а затем нажмите кнопку Run кнопку на панели инструментов, как показано ниже: (Внимание: в коде, S1 ячейка содержит адрес электронной почты, на который вы хотите отправить электронное письмо. Пожалуйста, измените их в соответствии с вашими потребностями.)

https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-send-emails.png

Пожалуйста, попробуйте еще раз!
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Я сделал все, как указано выше, и результат: все работает отлично, кроме кнопки :) На данный момент это не очень важно :)

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

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

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