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

Jak wysłać wiele wersji roboczych jednocześnie w Outlooku?

Jeśli w folderze Robocze jest wiele wiadomości roboczych, a teraz chcesz wysłać je od razu, bez wysyłania pojedynczo. Jak możesz szybko i łatwo poradzić sobie z tą pracą w Outlooku?

Wysyłaj wszystkie wersje robocze wiadomości naraz w Outlooku za pomocą kodu VBA


Wysyłaj wszystkie wersje robocze wiadomości naraz w Outlooku za pomocą kodu VBA

Poniższe kody VBA mogą pomóc w wysłaniu wszystkich lub wybranych roboczych wiadomości e-mail z folderu Wersje robocze na raz, wykonaj następujące czynności:

1. Przytrzymaj ALT + F11 klawisze, aby otworzyć Microsoft Visual Basic for Applications okno.

2. Następnie kliknij wstawka > Moduł, skopiuj i wklej poniższy kod do otwartego pustego modułu, zobacz zrzut ekranu:

Kod VBA: wyślij wszystkie robocze wiadomości e-mail naraz w programie 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. Następnie zapisz kod i naciśnij F5 Aby uruchomić ten kod, pojawi się okienko z przypomnieniem, czy wyślesz wszystkie wersje robocze, kliknij Takzobacz zrzut ekranu:

4. Pojawi się okno dialogowe przypominające o liczbie wysłanych roboczych wiadomości e-mail, zobacz zrzut ekranu:

5. A następnie kliknij OK przycisk, wszystkie e-maile w Warcaby folder zostanie wysłany od razu, patrz zrzut ekranu:

Uwagi:

1. Powyższy kod wyśle ​​wszystkie robocze wiadomości e-mail ze wszystkich kont w Twoim Outlooku.

2. Jeśli chcesz tylko wysłać określone wiadomości e-mail z folderu Wersje robocze, zastosuj następujący kod VBA:

Kod VBA: wyślij wybrane wiadomości e-mail z folderu Wersje robocze:

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

Podobne artykuły:

Jak wysłać wiadomość e-mail do wielu odbiorców indywidualnie w programie Outlook?

Jak wysyłać spersonalizowane masowe wiadomości e-mail na listę z programu Excel za pośrednictwem programu Outlook?

Jak wysłać kalendarz do wielu odbiorców indywidualnie w programie Outlook?

Jak wysłać wiadomość e-mail do wielu odbiorców bez ich wiedzy w programie Outlook?


Kutools dla programu Outlook - wprowadza 100 zaawansowanych funkcji do programu Outlook i znacznie ułatwia pracę!

  • Auto CC / BCC według zasad podczas wysyłania wiadomości e-mail; Auto Forward Wiele e-maili na zamówienie; Automatyczna odpowiedź bez serwera Exchange i więcej funkcji automatycznych ...
  • Ostrzeżenie BCC - pokaż wiadomość, gdy spróbujesz odpowiedzieć wszystkim jeśli Twój adres e-mail znajduje się na liście BCC; Przypomnij o braku załącznikówi więcej funkcji przypominających ...
  • Odpowiedz (wszystkie) ze wszystkimi załącznikami w rozmowie pocztowej; Odpowiedz na wiele e-maili w sekundy; Automatyczne dodawanie powitania kiedy odpowiedz; Dodaj datę do tematu ...
  • Narzędzia załączników: Zarządzaj wszystkimi załącznikami we wszystkich wiadomościach e-mail, Automatyczne odłączanie, Kompresuj wszystko, Zmień nazwę wszystkiego, Zapisz wszystko ... Szybki raport, Policz wybrane wiadomości...
  • Potężne wiadomości-śmieci na zamówienie; Usuń zduplikowane wiadomości e-mail i kontakty... Umożliwiają inteligentniejsze, szybsze i lepsze działanie w programie Outlook.
strzał Kutools Outlook Kutools tab 1180x121
shot Kutools Outlook Kutools Plus Tab 1180x121
 
Sortuj komentarze według
Komentarze (15)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Genialny, zadziałał urok, dziękuję :)
Ten komentarz został zminimalizowany przez moderatora na stronie
einfach nur perfekt. Herzlichen Dank
Ten komentarz został zminimalizowany przez moderatora na stronie
Skopiowane jak powyżej, ale po naciśnięciu F5 nic się nie dzieje
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Cathleen,
Powyższy kod działa dobrze w moim Outlooku, której wersji Outlooka używasz?
Ten komentarz został zminimalizowany przez moderatora na stronie
Mam wiele kont giełdowych. Chcę mieć jedno z kont, które nie jest domyślnie nadawcą. Gdzie mam to wstawić w kodzie? Dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy ktoś dostaje jakieś e-maile do usuniętego folderu, robiąc to?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Bill,
Czy chcesz wysłać kilka wybranych e-maili z usuniętego folderu?
Proszę podać swój problem bardziej szczegółowo, dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć skyyang, mam ten sam problem. Zwykle sporządzam 15-20 e-maili, a następnie używam tego kodu, aby wysłać je wszystkie naraz, ale później zdaję sobie sprawę, że jeden z tych e-maili nie zostanie wysłany, a raczej zostanie wysłany do mojego folderu „Usunięte”. Nawet monit mówi prawidłową liczbę e-maili, np. „Wysłano 20 e-maili”, ale kiedy sprawdzam, zostało wysłanych tylko 19, jeden znajdę w folderze z usuniętymi elementami. Chcę, aby wszystkie e-maile były wysyłane do odbiorców bez błędów. Czy możesz mi powiedzieć, dlaczego tak się dzieje. Proszę pomóż.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Darewin, Zaktualizowaliśmy powyższe kody, spróbuj ponownie, dziękuję!
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten sam problem: jeśli wybierzesz 4 wiadomości, po wysłaniu trzech z nich znajdują się w koszu (z powodu instrukcji "xDraftsItems.Item(i).Delete")
Ten komentarz został zminimalizowany przez moderatora na stronie
Użyliśmy skryptu do wysłania wszystkich wersji roboczych wiadomości e-mail naraz dla partii wiadomości e-mail z wyciągami wygenerowanymi od sage 200. Wiadomości e-mail w wysłanych elementach wyglądają dobrze, ale klienci otrzymują je z tekstem treści w języku chińskim! Jakieś pomysły, co może się tu dziać?
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy możesz wyjaśnić, dlaczego ostatnia wiadomość e-mail (i = 1) jest odtwarzana w nowym MailItem, a nie tylko w .Send?

Dzięki.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, szybkie pytanie, może masz pomysł. Mamy zewnętrzną aplikację, która zapisuje wszystkie maile w folderze drafts. jeśli uruchomię makro to mamy problem, że tylko pierwsza wiadomość z listy jest wysyłana poprawnie, wszystkie inne wiadomości są odraczane, ponieważ dodaje cudzysłów ' ' do adresu e-mail. Czy jest sposób, aby tego uniknąć?
Ten komentarz został zminimalizowany przez moderatora na stronie
Ten kod wysyła wszystkie wersje robocze do podfolderu o nazwie Narzędzia scalania (prosi przed wysłaniem). Jestem jednak pewien, że możecie go edytować, aby dopasować go do swoich potrzeb. To znacznie prostsze. Cieszyć się :)
Sub SendAllMergeToolsWersje robocze()

If MsgBox("Czy na pewno chcesz wysłać WSZYSTKIE elementy w folderze Kopie robocze narzędzi scalania?", _
vbQuestion + vbYesNo) <> vbYes Następnie wyjdź z Sub

Dim myNamespace As Outlook.NameSpace 'Zmień widok na skrzynkę odbiorczą, aby uniknąć wbudowanego błędu
Set myNamespace = Application.GetNamespace("MAPI") 'Zmień widok na skrzynkę odbiorczą, aby uniknąć błędu wbudowanego
Ustaw Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox) 'Zmień widok na skrzynkę odbiorczą, aby uniknąć błędów wbudowanych

Dim fldDraft jako MAPIFolder, wiadomość jako Outlook.MailItem, intCount jako liczba całkowita
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts).Folders("Narzędzia scalania") 'Wysyła wszystkie wersje robocze tylko z folderu Narzędzia scalania
intLiczba = 0
Dopóki fldDraft.Items.count > 0
Ustaw msg = fldDraft.Elementy(1)
msg.Wyślij
intCount = intCount + 1
Pętla
Jeśli nie (msg Is Nothing) to ustaw msg = Nothing
Ustaw fldDraft = Nic
MsgBox intCount i " wiadomości wysłane", vbInformation + vbOKOnly

End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć. Myśl, że się podzielę. Oto mój kod do wysyłania wszystkich wersji roboczych:
Sub SendAllDrafts() 'Autor: jamesmalcolmwood@gmail.com

If MsgBox("Czy na pewno chcesz wysłać WSZYSTKIE elementy w folderze roboczym?", _
vbQuestion + vbYesNo) <> vbYes Następnie wyjdź z Sub

Dim myNamespace As Outlook.NameSpace 'Zmień widok na skrzynkę odbiorczą, aby uniknąć wbudowanego błędu
Set myNamespace = Application.GetNamespace("MAPI") 'Zmień widok na skrzynkę odbiorczą, aby uniknąć błędu wbudowanego
Ustaw Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder(olFolderInbox) 'Zmień widok na skrzynkę odbiorczą, aby uniknąć błędów wbudowanych

Dim fldDraft jako MAPIFolder, wiadomość jako Outlook.MailItem, intCount jako liczba całkowita
Set fldDraft = Outlook.GetNamespace("MAPI").GetDefaultFolder(olFolderDrafts) 'Wysyła wszystkie wersje robocze z głównego folderu wersji roboczych. Dla podfolderu dodaj .Folders("nazwa folderu")
intLiczba = 0
Dopóki fldDraft.Items.count > 0
Ustaw msg = fldDraft.Elementy(1)
msg.Wyślij
intCount = intCount + 1
Pętla
Jeśli nie (msg Is Nothing) to ustaw msg = Nothing
Ustaw fldDraft = Nic
MsgBox intCount i " wiadomości wysłane", vbInformation + vbOKOnly

End Sub
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL