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. Клацання Insert > Модуліта вставте наступний код у Вікно модуля.

Код 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 для Excel, з більш ніж 120 зручні функції, полегшує вам роботу. 

1. Активуйте робочий аркуш і утримуйте ALT + F11 ключі, щоб відкрити Вікно Microsoft Visual Basic для програм.

2. Клацання Insert > Модуліта вставте наступний код у Вікно модуля.

Код 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 для 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% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (26)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Привіт, я використовую marco, який вибирає клітинки, необхідні для надсилання електронної пошти. я поєднав це з іншим макросом, щоб я змусив його відкрити «нову електронну пошту». Тепер моя проблема полягає в тому, що якщо ви помістили багато інформації в одну клітинку, то це займе лише те, що ви переглядаєте не всю інформацію в цій клітинці, будь-які ідеї ?? дуже дякую за вашу допомогу з цим вітання
Цей коментар був мінімізований модератором на сайті
Привіт всім
У мене є проект, щоб вибрати діапазон на аркуші 1, який буде надіслано електронною поштою по одній на багато адрес електронної пошти, записаних на аркуші 2 у стовпці A, і якщо стовпець B порожній із певною темою, і після надсилання він пише в аркуші 2 стовпець b надіслано
І чекати час 10 секунд, щоб відправити наступний лист як умова сервера
Допоможіть мені будь ласка?   
Цей коментар був мінімізований модератором на сайті
Привіт. Скажіть, будь ласка, як додати підпис і другий рядок вступу до цього листа для другої програми. Заздалегідь спасибі.
Цей коментар був мінімізований модератором на сайті
гарно та корисно, гарна робота!!!
Цей коментар був мінімізований модератором на сайті
Дуже корисний. Дякую . У мене є список адрес електронної пошти на тому ж аркуші. Коли я натиснув одну адресу електронної пошти, вибраний діапазон клітинок буде надіслано як вкладення до цього листа. Чи можете, будь ласка, допомогти мені з цим? Велике спасибі.
Цей коментар був мінімізований модератором на сайті
Привіт, дуже гарно пояснили. Замість того, щоб надсилати нову книгу, ми можемо лише скопіювати та вставити вибраний діапазон у тіло електронної пошти та надіслати. Я не хочу надсилати вибраний діапазон як зображення. Я хочу надіслати як вигляд таблиці в тілі листа. ми можемо це зробити??
Цей коментар був мінімізований модератором на сайті
Дякую, це дуже корисно, але що робити, якщо мені потрібно додати опис у текст листа перед його відправкою. Будь ласка, запропонуйте код.
Цей коментар був мінімізований модератором на сайті
привіт,
Все виглядає добре, але не надає межі вибраного діапазону. Не могли б ви запропонувати.
Цей коментар був мінімізований модератором на сайті
Дуже дякую, я так довго знаходжу це рішення.
Цей коментар був мінімізований модератором на сайті
Чудова робота. Було б краще бачити це автоматично. Що мені робити, щоб перед продовженням надсилання не виникала помилка?
Цей коментар був мінімізований модератором на сайті
чи можемо ми вказати стільки адрес електронної пошти для надсилання?
Цей коментар був мінімізований модератором на сайті
Привіт, Кері, усі вищезазначені VBA можуть додавати багато адрес електронної пошти (Кому, 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, sondern per copy and paste in die E-Mail einfügen. Чи є у VBA-коді?
Цей коментар був мінімізований модератором на сайті
Привіт, у мене налаштована таблиця, яку я хочу заповнити персонал, а потім кнопка команди, яка автоматично створить електронний лист, але я хочу, щоб дані з таблиці були в тілі електронної пошти. Чи є для цього код? 
Дякую 
Цей коментар був мінімізований модератором на сайті
Привіт всім
У мене є проект, щоб вибрати діапазон на аркуші 1, який буде надіслано електронною поштою по одній на багато адрес електронної пошти, записаних на аркуші 2 у стовпці A, і якщо стовпець B порожній із певною темою, і після надсилання він пише в аркуші 2 стовпець b надіслано
І чекати час 10 секунд, щоб відправити наступний лист як умова сервера
Допоможіть мені будь ласка?   
Цей коментар був мінімізований модератором на сайті
Привіт всім
У мене є проект, щоб вибрати діапазон на аркуші 1, який буде надіслано електронною поштою по одній на багато адрес електронної пошти, записаних на аркуші 2 у стовпці A, і якщо стовпець B порожній із певною темою, і після надсилання він пише в аркуші 2 стовпець b надіслано
І чекати час 10 секунд, щоб відправити наступний лист як умова сервера
Допоможіть мені будь ласка?   
Цей коментар був мінімізований модератором на сайті
Привіт, hriad, "якщо колонка B порожня з певною темою і після відправки він пише в аркуші 2 стовпець b надіслано
І чекати час 10 секунд для відправки наступного листа як умова сервера" Я цього не розумію. Будь ласка, перекажіть мені про свою вимогу.
Цей коментар був мінімізований модератором на сайті
Привіт Сонячний
Перш за все, дякую за вашу допомогу, оскільки сервер поставив умову не надсилати багато листів за одну секунду, я хочу зачекати 10 секунд після надсилання першого та наступного.
Цей коментар був мінімізований модератором на сайті
Привіт, hriad, будь ласка, спробуйте наведений нижче код, після його запуску з'явиться діалогове вікно для вибору діапазону, який ви хочете надіслати, а потім він надсилає на адреси в аркуші 2 стовпця A та з темами в стовпці B. Кожні 10 секунд , відправити на одну адресу. Ви можете змінити код "Будь ласка, прочитайте цей лист", якщо вам потрібно.
Sub SendEmailRange()

'Оновити доExtendoffice20220414

Dim WorkRng як діапазон

Dim xSU, EV як логічне значення

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

Dim xCount як ціле число

Dim xI як ціле число

On Error Resume Next

xTitleId = "KutoolsforExcel"

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

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

Якщо WorkRng — нічого, вийдіть із Sub
WorkRng.Activate
WorkRng.Select

Встановіть xWSh = ActiveWorkbook.Worksheets("Sheet2") 'аркуш, який містить адреси та теми

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = Невірний


Для xI = 1 До xCount

Якщо (xWSh.Range("A" & xI) = "") Тоді
Вихід для
End If
ActiveWorkbook.EnvelopeVisible = True
За допомогою ActiveSheet.MailEnvelope
.Introduction = "Будь ласка, прочитайте цей електронний лист."

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

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

.Пункт.Відправити
Кінець з
Якщо (xI = xCount) Тоді

Вихід для

End If

Application.Wait Now + TimeValue("0:00:10")

Далі


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Цей коментар був мінімізований модератором на сайті
Привіт Сонячний
Дуже дякую за ваші зусилля... Дуже дякую
Цей коментар був мінімізований модератором на сайті
Чи можемо ми фіксувати діапазони? в макросі сам по собі
Цей коментар був мінімізований модератором на сайті
Привіт

Mam plik z 6 arkuszami. 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 для додатків вікно, а потім натисніть кнопку прогін на панелі інструментів, як показано на знімку екрана нижче: (примітки: в коді, S1 клітинка містить адресу електронної пошти, на яку ви хочете надіслати електронний лист. Будь ласка, змініть їх відповідно до ваших потреб.)

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

Будь ласка спробуйте ще раз!
Цей коментар був мінімізований модератором на сайті
привіт,

Я зробив усе, як описано вище, і результат: усе працює ідеально, окрім кнопки :) Наразі це не дуже хвилює :)

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

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

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