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

Як надсилати кілька чернеток одночасно в Outlook?

Якщо у вашій папці "Чернетки" є кілька чернеток повідомлень, і зараз ви хочете надіслати їх одразу, не надсилаючи одне за одним. Як ви могли швидко і легко впоратися з цією роботою в Outlook?

Надсилайте всі чернетки повідомлень одночасно в Outlook за допомогою коду VBA


Надсилайте всі чернетки повідомлень одночасно в Outlook за допомогою коду VBA

Наступні коди VBA можуть допомогти вам одночасно надсилати всі або вибрані чернетки електронної пошти з папки "Чернетки". Будь ласка, зробіть так:

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

2. Потім натисніть Insert > Модулі, скопіюйте та вставте код нижче у відкритий порожній модуль, див. знімок екрана:

Код VBA: Надсилайте всі чернетки електронних листів одночасно в Outlook:

Sub SendAllDraftEmails()
Dim xAccount As Account
Dim xDraftFld As Folder
Dim xItemCount As Integer
Dim xCount As Integer
Dim xDraftsItems As Outlook.Items
Dim xPromptStr As String
Dim xYesOrNo As Integer
Dim i As Long
Dim xCurFld As Folder
Dim xTmpFld As Folder
On Error Resume Next
xItemCount = 0
xCount = 0
Set xTmpFld = Nothing
Set xCurFld = Application.ActiveExplorer.CurrentFolder
For Each xAccount In Outlook.Application.Session.Accounts
    Set xDraftFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
    xItemCount = xItemCount + xDraftFld.Items.Count
    If xDraftFld.EntryID = xCurFld.EntryID Then
        Set xTmpFld = xCurFld.Parent
    End If
Next xAccount
Set xDraftFld = Nothing
If xItemCount > 0 Then
   xPromptStr = "Are you sure to send out all the drafts?"
    xYesOrNo = MsgBox(xPromptStr, vbQuestion + vbYesNo, "Kutools for Outlook")
    If xYesOrNo = vbYes Then
        If Not xTmpFld Is Nothing Then
            Set Application.ActiveExplorer.CurrentFolder = xTmpFld
        End If
        VBA.DoEvents
        For Each xAccount In Outlook.Application.Session.Accounts
            Set xDraftFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
            Set xDraftsItems = xDraftFld.Items
            For i = xDraftsItems.Count To 1 Step -1
                If xDraftsItems.Item(i).Recipients.Count <> 0 Then
                    xDraftsItems.Item(i).sEnd
                    xCount = xCount + 1
                End If
            Next
        Next xAccount
        VBA.DoEvents
        Set Application.ActiveExplorer.CurrentFolder = xCurFld
        MsgBox "Successfully sent " & xCount & " messages", vbInformation, "Kutools for Outlook"
    End If
Else
    MsgBox "No Drafts!", vbInformation + vbOKOnly, "Kutools for Outlook"
End If
End Sub

3. Потім збережіть код і натисніть F5 клавішу для запуску цього коду, з'явиться вікно із запитом, щоб нагадати, якщо ви надсилаєте всі чернетки, натисніть Так, див. скріншот:

4. І відкриється діалогове вікно, щоб нагадати, скільки чернеток електронних листів було розіслано, див. Знімок екрана:

5. А потім клацніть OK кнопку, всі електронні листи в Шашки папка буде надіслана відразу, див. скріншот:

Примітки:

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

2. Якщо ви просто хочете надіслати певні електронні листи з папки Чернетки, застосуйте такий код VBA:

Код VBA: Надіслати вибрані електронні листи з папки Чернетки:

Sub SendSelectedDraftEmails()
Dim xSelection As Selection
Dim xPromptStr As String
Dim xYesOrNo As Integer
Dim i As Long
Dim xAccount As Account
Dim xCurFld As Folder
Dim xDraftsFld As Folder
Dim xTmpFld As Folder
Dim xArr() As String
Dim xCount As Integer
Dim xMail As MailItem
On Error Resume Next
xCount = 0
Set xTmpFld = Nothing
Set xCurFld = Application.ActiveExplorer.CurrentFolder
For Each xAccount In Outlook.Application.Session.Accounts
    Set xDraftsFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderDrafts)
    If xDraftsFld.EntryID = xCurFld.EntryID Then
        Set xTmpFld = xCurFld.Parent
    End If
Next xAccount
If xTmpFld Is Nothing Then
    MsgBox "The current folder is not a draft folder", vbInformation, "Kutools for Outlook"
    Exit Sub
End If
Set xSelection = Outlook.Application.ActiveExplorer.Selection
If xSelection.Count > 0 Then
    xPromptStr = "Are you sure to send out the selected " & xSelection.Count & " draft item(s)?"
    xYesOrNo = MsgBox(xPromptStr, vbQuestion + vbYesNo, "Kutools for Outlook")
    If xYesOrNo = vbYes Then
        ReDim xArr(xSelection.Count - 1)
        For i = 1 To xSelection.Count
            xArr(i - 1) = xSelection.Item(i).EntryID
        Next
        Set Application.ActiveExplorer.CurrentFolder = xTmpFld
        VBA.DoEvents
        For i = 0 To UBound(xArr)
            Set xMail = Application.Session.GetItemFromID(xArr(i))
            If xMail.Recipients.Count <> 0 Then
                xMail.sEnd
                xCount = xCount + 1
            End If
        Next
        VBA.DoEvents
        Set Application.ActiveExplorer.CurrentFolder = xCurFld
        MsgBox "Successfully sent " & xCount & " messages", vbInformation, "Kutools for Outlook"
    End If
Else
    MsgBox "No items selected!", vbInformation, "Kutools for Outlook"
End If
End Sub

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

Як надіслати електронне повідомлення кільком одержувачам окремо в Outlook?

Як надсилати персоналізовані електронні листи до списку з Excel через Outlook?

Як надіслати календар окремо кільком одержувачам в Outlook?

Як надіслати електронну пошту кільком одержувачам, не знаючи їх у програмі Outlook?


Kutools для Outlook - приносить 100 розширених функцій для Outlook і значно полегшує роботу!

  • Авто CC / BCC за правилами при відправці електронної пошти; Автоматичне пересилання вперед Кілька електронних листів на замовлення; Автовідповідь без сервера обміну та більше автоматичних функцій ...
  • Попередження BCC - показати повідомлення при спробі відповісти всім якщо ваша поштова адреса є у списку BCC; Нагадати про відсутність вкладеньта інші функції нагадування ...
  • Відповісти (Усі) з усіма вкладеннями в поштовій розмові; Відповісти на багато електронних листів за секунди; Автоматично додавати привітання при відповіді; Додати дату в тему ...
  • Інструменти вкладення: Керування всіма вкладеннями у всіх листах, Автоматичне від'єднання, Стиснути все, Перейменувати все, Зберегти все ... Швидкий звіт, Підрахувати вибрані листи...
  • Потужні небажані електронні листи за звичаєм; Видаліть повторювані листи та контакти... Дозвольте вам робити розумніші, швидші та кращі в Outlook.
постріл kutools outlook kutools вкладка 1180x121
постріл kutools outlook kutools плюс вкладка 1180x121
 
Коментарі (15)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Чудово, чудово спрацювало, дякую :)
Цей коментар був мінімізований модератором на сайті
einfach nur perfekt. Герцліхен Данк
Цей коментар був мінімізований модератором на сайті
Скопійовано, як зазначено вище, але коли я натискаю F5, нічого не відбувається
Цей коментар був мінімізований модератором на сайті
Привіт, Кетлін,
Наведений вище код добре працює в моєму Outlook. Яку версію Outlook ви використовуєте?
Цей коментар був мінімізований модератором на сайті
У мене є кілька акаунтів обміну. Я хочу, щоб один із облікових записів, який не є моїм за умовчанням, був відправником. Куди я маю це вставити в коді? Спасибі!
Цей коментар був мінімізований модератором на сайті
Хтось отримує електронні листи в папку видалених, роблячи це?
Цей коментар був мінімізований модератором на сайті
Привіт, Білл,
Бажаєте надіслати кілька вибраних електронних листів із видаленої папки?
Будь ласка, опишіть свою проблему детальніше, дякую!
Цей коментар був мінімізований модератором на сайті
Привіт, Скайян, у мене така сама проблема. Зазвичай я пишу 15-20 електронних листів, а потім використовую цей код, щоб надіслати їх усі одночасно, але пізніше розумію, що одне з цих електронних листів не надсилається, а надсилається в мою папку «Видалені». Навіть підказка вказує правильну кількість електронних листів, наприклад: «20 електронних листів надіслано», але коли я перевіряю, було б надіслано лише 19, один я знайду, що він лежить у моїй папці видалених елементів. Я хочу, щоб усі електронні листи надсилалися одержувачам без помилок. Скажіть, будь ласка, чому це відбувається? Будь ласка, допоможіть.
Цей коментар був мінімізований модератором на сайті
Привіт, Darewin! Ми оновили наведені вище коди, спробуйте ще раз, дякую!
Цей коментар був мінімізований модератором на сайті
Та сама проблема: якщо ви вибираєте 4 повідомлення, після надсилання трьох із них потрапляє в папку смітника (через інструкцію «xDraftsItems.Item(i).Delete»)
Цей коментар був мінімізований модератором на сайті
Ми використали сценарій, щоб надіслати всі чернетки електронних листів одночасно для пакету електронних листів із заявами, згенерованих за допомогою sage 200. Електронні листи в надісланих елементах виглядають нормально, але клієнти отримують їх із основним текстом китайською! Є ідеї, що тут може статися?
Цей коментар був мінімізований модератором на сайті
Чи можете ви пояснити, чому останній лист (i = 1) відтворюється в новому MailItem, а не просто .Send?

Завдяки.
Цей коментар був мінімізований модератором на сайті
Привіт, швидке запитання, можливо, у вас є ідея. У нас є зовнішня програма, яка зберігає всі листи в папці чернеток. якщо я запускаю макрос, у нас виникає проблема: лише перший лист у списку надсилається правильно, усі інші листи відкладено, оскільки він додає лапки " " до електронної адреси. Чи є спосіб уникнути цього?
Цей коментар був мінімізований модератором на сайті
Цей код надсилає всі чернетки у підпапку під назвою «Інструменти злиття» (перед надсиланням він запитує вас). Я впевнений, що ви можете відредагувати його відповідно до своїх потреб. Це набагато простіше. Насолоджуйтесь :)
Sub SendAllMergeToolsDrafts()

Якщо MsgBox(«Ви впевнені, що бажаєте надіслати ВСІ елементи з папки чернеток інструментів злиття?», _
vbQuestion + vbYesNo) <> vbYes Потім вийти з Sub

Dim myNamespace As Outlook.NameSpace 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки
Set myNamespace = Application.GetNamespace("MAPI") 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки
Установіть Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox) 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки

Dim fldDraft As MAPIFolder, msg As Outlook.MailItem, intCount As Integer
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts).Folders("Merge Tools") 'Надсилає всі чернетки лише в папці Merge Tools
intCount = 0
Do While fldDraft.Items.count > 0
Установити msg = fldDraft.Items(1)
msg.Send
intCount = intCount + 1
Петля
Якщо ні (повідомлення не означає нічого), тоді встановіть значення msg = нічого
Встановити fldDraft = Нічого
MsgBox intCount & " повідомлення надіслано", vbInformation + vbOKOnly

End Sub
Цей коментар був мінімізований модератором на сайті
Привіт, народ. Думав поділитися. Ось мій код для надсилання всіх чернеток:
Sub SendAllDrafts() 'Автор: jamesmalcolmwood@gmail.com

Якщо MsgBox("Ви впевнені, що бажаєте надіслати ВСІ елементи у папці чернеток?", _
vbQuestion + vbYesNo) <> vbYes Потім вийти з Sub

Dim myNamespace As Outlook.NameSpace 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки
Set myNamespace = Application.GetNamespace("MAPI") 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки
Установіть Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox) 'Змінити вигляд на папку "Вхідні", щоб уникнути вбудованої помилки

Dim fldDraft As MAPIFolder, msg As Outlook.MailItem, intCount As Integer
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 'Надсилає всі чернетки у вашій основній папці чернеток. Для вкладеної папки додайте .Folders("назва папки")
intCount = 0
Do While fldDraft.Items.count > 0
Установити msg = fldDraft.Items(1)
msg.Send
intCount = intCount + 1
Петля
Якщо ні (повідомлення не означає нічого), тоді встановіть значення msg = нічого
Встановити fldDraft = Нічого
MsgBox intCount & " повідомлення надіслано", vbInformation + vbOKOnly

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

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

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