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

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

У деяких випадках вам може знадобитися запустити повідомлення електронною поштою для вказаного одержувача, якщо в книзі, яку ви надіслали, оновлено дані. Ця стаття покаже вам спосіб її досягнення.

Надішліть нагадування або сповіщення електронною поштою, якщо книга оновлена ​​кодом VBA


Надішліть нагадування або сповіщення електронною поштою, якщо книга оновлена ​​кодом VBA


Будь-ласка, виконайте наступні дії, щоб надіслати нагадування або сповіщення електронною поштою, якщо книга оновлена.

1. У робочій книзі відкрийте вказаний аркуш, на який ви надішлете сповіщення електронною поштою на основі оновлених даних всередині.

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

2 В Microsoft Visual Basic для додатків вікно, скопіюйте та вставте наступний код у вікно коду. Дивіться знімок екрана:

Код VBA: Надішліть нагадування або сповіщення електронною поштою, якщо книга оновлена

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xMailItem As Object
    Dim xName As String
    Dim xYesOrNo As Integer
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailItem = xOutApp.CreateItem(0)
    xYesOrNo = MsgBox("Want to attach updated workbook in email?", vbInformation + vbYesNo, "KuTools For Excel")
    If xYesOrNo = 6 Then ActiveWorkbook.Save
    If xYesOrNo = 6 Then xName = ActiveWorkbook.FullName
    With xMailItem
        .To = "Email Address"
        .cc = ""
        .Subject = "email notification test"
        .Body = "Hi," & Chr(13) & Chr(13) & "File is now updated."
        If xYesOrNo = 6 Then .Attachments.Add xName
        .Display
    End With
    xMailItem = Nothing
    xOutApp = Nothing
End Sub

примітки: Замініть адресу електронної пошти адресою електронної пошти одержувача в рядку .To = "Адреса електронної пошти". І змініть Cc, Subject, а також поля body у коді VBA, як вам потрібно.

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

4. Після редагування комірки на аркуші a Kutools для Excel з'явиться діалогове вікно, як показано нижче. Якщо ви хочете прикріпити оновлену книгу до електронного листа, натисніть кнопку Так кнопку. Якщо ні, натисніть Немає кнопки.

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

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


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


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

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% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (16)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Якщо хтось знайшов цю сторінку, задаючись питанням, як надіслати електронний лист із Excel за допомогою CDO, я зібрав Google Doc -- Як надіслати електронну пошту з Excel за допомогою Gmail (https://docs.google.com/document/d/1u5VLzCApU3k4-9Vp9LEfqyFZ6u9tAY0avNPYN_1FsN4/edit?usp=sharing) з кодом на GitHub gist (https://gist.github.com/bergerjac/7355d4e528fa6c64a02dc494f3d241a1)
Цей коментар був мінімізований модератором на сайті
Чи можу я CC більше, ніж людина в цьому? Спасибі
Цей коментар був мінімізований модератором на сайті
Привіт Лія,
Будь ласка, введіть адреси електронної пошти безпосередньо в рядок .cc="" та розділіть їх крапкою з комою, наприклад .cc = "AAA@gmail.com;BBB@gmail.com"
Цей коментар був мінімізований модератором на сайті
Я скопіював та вставив код з цієї сторінки точно так, як є, але коли я вношу зміни в свій документ, я отримую повідомлення «Синтаксична помилка», і цей рядок виділяється: Dim xOutApp As Object. Будемо вдячні за будь-яку допомогу.
Цей коментар був мінімізований модератором на сайті
Привіт Джуді!
Не могли б ви надати версію Excel, яку ви використовуєте? Дякуємо за коментар.
Цей коментар був мінімізований модератором на сайті
Привіт, код працює чудово. Однак, коли клітинка стає нижчою за порогову точку за допомогою операції макросу, яка копіює та вставляє нижнє значення у призначену клітинку, код, схоже, не запускається.

Також я хотів би застосувати цей код до кількох клітинок. Чи можу я скопіювати та вставити код кілька разів і змінити кожну скопійовану версію відповідно до потреб кожної клітинки? Чи є кращий спосіб зробити це. Я не можу цього зрозуміти. Дякую!
Цей коментар був мінімізований модератором на сайті
Вибачте, я написав це не в тій статті. Я опублікую в правильній статті
Цей коментар був мінімізований модератором на сайті
Коли я спробував щось змінити в комірці, з’явилося повідомлення з пропозицією налаштувати електронну пошту Outlook, і воно просто продовжує запитувати мій пароль.
Цей коментар був мінімізований модератором на сайті
Привіт MJ!
Яку версію Excel ви використовуєте? Чи можете ви надати знімок екрана підказки?
Цей коментар був мінімізований модератором на сайті
Для мене код виконується знову і знову, це як нескінченний цикл. Я закриваю електронну пошту, вона знову просить надіслати...
Цей коментар був мінімізований модератором на сайті
будь ласка, я трохи заплутався, але де в коді він виявляє, що аркуш змінюється/оновлюється?
Я намагаюся написати код, де таблиця на певному аркуші надсилається, коли таблиця змінюється (або точніше, коли додаються рядки)
Дякую!
Цей коментар був мінімізований модератором на сайті
привіт,
Код у дописі виявляє всі клітинки на всьому аркуші на основі першого рядка "Private Sub Worksheet_Change(ByVal Target As Range)".
Якщо ви хочете надіслати електронний лист із певною таблицею, коли вона буде змінена, ви можете спробувати наступний VBA.
примітки: будь ласка, змініть "Table1" на свою власну назву таблиці.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 2022/5/27
    Dim xYesOrNo As Integer
    Dim xTableName As String
    Dim xTableRg As Range
    Dim I, J As Long
    Dim xEmailBody As String
    Dim xMailOut As Object
    Dim xOutApp As Object
    On Error Resume Next
    
    xTableName = "Table1" 'The name of the table you will send when it is modified
    Set xTableRg = ActiveSheet.ListObjects(xTableName).Range
    If Intersect(Target, xTableRg) Is Nothing Then Exit Sub

    Set xOutApp = CreateObject("Outlook.Application")
    Set xMailOut = xOutApp.CreateItem(olMailItem)
    For I = 1 To xTableRg.Rows.Count
        For J = 1 To xTableRg.Columns.Count
            xEmailBody = xEmailBody & "  " & xTableRg.Cells(I, J).Value
        Next
        xEmailBody = xEmailBody & vbNewLine
    Next
    xEmailBody = "Hi" & vbLf & vbLf & " body of message you want to add" & vbLf & vbLf & xEmailBody & vbNewLine
    With xMailOut
        .Subject = "Test"
        .To = "XXX@163.com"
        .Body = xEmailBody
        .Display
        '.Send
    End With
    Set xMailOut = Nothing
    Set xOutApp = Nothing
End Sub
Цей коментар був мінімізований модератором на сайті
Hola cristal, donde dice Private Sub Worksheet_Change, deberia poner el nombre de mi excel чи ні?
Los rangos de (I,J) cambiarlos por los valores de celdas que yo dese estar mirando si cambian?
Цей коментар був мінімізований модератором на сайті
HOLA CRISTAL, ME GUSTARIA PONERME EN CONTACTO DIRECTO CONTIGO, NE CESITO DE TU AYUDA EN EXCEL,GRACIAS
Цей коментар був мінімізований модератором на сайті
HOLA CRISTAL, ME GUSTARIA PONERME EN CONTACTO DIRECTO CONTIGO, PARA PEDIR TU AYUDA EN UN PROBLEMITA EN UNA HOJA DE EXCEL
Цей коментар був мінімізований модератором на сайті
Привіт, ГЕРАРДО МАРТІН ОЛВЕРА,
Ви можете написати мені на zxm@addin99.com.
There are no comments posted here yet
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця