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

Làm cách nào để gửi nhiều bản nháp cùng một lúc trong Outlook?

Nếu có nhiều thư nháp trong thư mục Thư nháp của bạn và bây giờ, bạn muốn gửi chúng cùng một lúc mà không cần gửi từng thư một. Làm cách nào bạn có thể giải quyết công việc này một cách nhanh chóng và dễ dàng trong Outlook?

Gửi tất cả thư nháp cùng một lúc trong Outlook với mã VBA


Gửi tất cả thư nháp cùng một lúc trong Outlook với mã VBA

Các mã VBA sau có thể giúp bạn gửi tất cả hoặc các email nháp đã chọn từ thư mục Thư nháp cùng một lúc, vui lòng thực hiện như sau:

1. Giữ ALT + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. Sau đó nhấn vào Chèn > Mô-đun, sao chép và dán mã bên dưới vào mô-đun trống đã mở, xem ảnh chụp màn hình:

Mã VBA: Gửi tất cả các email nháp cùng một lúc trong 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. Sau đó lưu mã và nhấn F5 để chạy mã này, một hộp nhắc sẽ bật lên để nhắc bạn nếu gửi tất cả các bản nháp, hãy nhấp vào, xem ảnh chụp màn hình:

4. Và một hộp thoại sẽ bật ra để nhắc bạn có bao nhiêu email nháp đã được gửi đi, hãy xem ảnh chụp màn hình:

5. Và sau đó nhấp vào OK , tất cả các email trong Nháp thư mục sẽ được gửi cùng một lúc, xem ảnh chụp màn hình:

Ghi chú:

1. Đoạn mã trên sẽ gửi tất cả các email nháp từ tất cả các tài khoản trong Outlook của bạn.

2. Nếu bạn chỉ muốn gửi một số email cụ thể từ thư mục Thư nháp, vui lòng áp dụng mã VBA sau:

Mã VBA: Gửi các email đã chọn từ thư mục Thư nháp:

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

Bài viết liên quan:

Làm thế nào để gửi một email đến nhiều người nhận riêng lẻ trong Outlook?

Làm thế nào để gửi email hàng loạt được cá nhân hóa đến một danh sách từ Excel qua Outlook?

Làm thế nào để gửi một lịch đến nhiều người nhận riêng lẻ trong Outlook?

Làm thế nào để gửi email đến nhiều người nhận mà họ không biết trong Outlook?


Kutools cho Outlook - Cung cấp 100 Tính năng Nâng cao cho Outlook và Làm cho Công việc Dễ dàng hơn Nhiều!

  • Auto CC / BCC bởi các quy tắc khi gửi email; Tự động chuyển tiếp Nhiều Email theo tùy chỉnh; Tự động trả lời không có máy chủ trao đổi và các tính năng tự động khác ...
  • Cảnh báo BCC - hiển thị tin nhắn khi bạn cố gắng trả lời tất cả nếu địa chỉ thư của bạn có trong danh sách BCC; Nhắc nhở khi thiếu tệp đính kèmvà các tính năng nhắc nhở khác ...
  • Trả lời (Tất cả) Với Tất cả Tệp đính kèm trong cuộc trò chuyện qua thư; Trả lời nhiều email trong vài giây; Tự động thêm lời chào khi trả lời; Thêm Ngày vào chủ đề ...
  • Công cụ Tệp đính kèm: Quản lý Tất cả Tệp đính kèm trong Tất cả Thư, Tự động tách, Nén tất cả, Đổi tên tất cả, Lưu tất cả ... Báo cáo nhanh, Đếm thư đã chọnhữu ích. Cảm ơn !
  • Email rác mạnh mẽ Theo phong tục; Xóa thư và liên hệ trùng lặphữu ích. Cảm ơn ! Cho phép bạn làm việc thông minh hơn, nhanh hơn và tốt hơn trong Outlook.
shot kutools triển vọng tab kutools 1180x121
shot kutools triển vọng kutools plus tab 1180x121
 
Nhận xét (15)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thật tuyệt vời, đã làm nên một sự quyến rũ, cảm ơn bạn :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
einfach nur hoàn hảo. Herzlichen Dank
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Đã sao chép như trên nhưng khi tôi nhấn F5 không có gì xảy ra
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Cathleen,
Đoạn mã trên hoạt động tốt trong Outlook của tôi, bạn sử dụng phiên bản Outlook nào?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi có nhiều tài khoản trao đổi. Tôi muốn có một trong những tài khoản không phải là tài khoản mặc định của tôi để trở thành người gửi. Tôi sẽ chèn cái này ở đâu trong mã? Cảm ơn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Có ai nhận được một số email được gửi đến thư mục đã xóa đang thực hiện việc này không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Bill,
Bạn có muốn gửi nhiều email đã chọn từ foder đã xóa không?
Vui lòng cho biết vấn đề của bạn chi tiết hơn, cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào skyyang, tôi đang gặp phải vấn đề tương tự. Tôi thường soạn thảo 15-20 email và sau đó sử dụng mã này để gửi tất cả chúng cùng một lúc, nhưng sau đó nhận ra rằng một trong những email đó không được gửi, thay vào đó chúng được gửi đến thư mục 'Đã xóa' của tôi. Ngay cả lời nhắc cho biết số lượng email chính xác, ví dụ: '20 email đã được gửi' nhưng khi tôi kiểm tra, chỉ có 19 email đã được gửi, một email tôi sẽ thấy nó nằm trong thư mục các mục đã xóa của tôi. Tôi muốn tất cả các email được gửi đến người nhận của họ mà không bị lỗi. Bạn có thể vui lòng cho tôi biết lý do tại sao điều này xảy ra. Xin vui lòng giúp đỡ.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Darewin, Chúng tôi đã cập nhật các mã trên, vui lòng thử lại, cảm ơn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vấn đề tương tự: nếu bạn chọn 4 thư, sau khi gửi ba thư trong thư mục thùng rác (vì câu lệnh "xDraftsItems.Item (i) .Delete")
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chúng tôi đã sử dụng tập lệnh để gửi tất cả các email nháp cùng một lúc cho một loạt email báo cáo được tạo từ sage 200. Các email trong các mục đã gửi trông ổn nhưng khách hàng đang nhận chúng với nội dung bằng tiếng Trung! Bất kỳ ý tưởng những gì có thể xảy ra ở đây?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bạn có thể giải thích tại sao thư cuối cùng (i = 1) được tạo lại trong một MailItem mới thay vì chỉ .Send không?

Cảm ơn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, câu hỏi nhanh có thể bạn có Ý tưởng. Chúng tôi có một ứng dụng bên ngoài lưu tất cả các thư vào thư mục thư nháp. Nếu tôi chạy macro, chúng tôi gặp sự cố, rằng chỉ có thư đầu tiên trong danh sách được gửi chính xác, tất cả các thư khác bị hoãn lại vì nó thêm dấu ngoặc kép '' vào địa chỉ thư. Có cách nào để tránh điều này không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Mã này gửi tất cả các bản nháp trong một thư mục con được gọi là Công cụ Hợp nhất (nó hỏi bạn trước khi gửi). Tôi chắc rằng các bạn có thể chỉnh sửa nó cho phù hợp với nhu cầu của mình. Nó đơn giản hơn nhiều. Vui thích :)
Sub SendAllMergeToolsDrafts ()

If MsgBox ("Bạn có chắc chắn muốn gửi TẤT CẢ các mục trong thư mục bản nháp Công cụ Hợp nhất của mình không?", _
vbQuestion + vbYesNo) <> vbYes Sau đó thoát Sub

Dim myNamespace Như Outlook.NameSpace 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến
Đặt myNamespace = Application.GetNamespace ("MAPI") 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến
Đặt Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder (olFolderInbox) 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến

Làm mờ fldDraft dưới dạng MAPIFolder, msg dưới dạng Outlook.MailItem, intCount dưới dạng số nguyên
Đặt fldDraft = Outlook.GetNamespace ("MAPI"). GetDefaultFolder (olFolderDrafts) .Folders ("Merge Tools") 'Chỉ gửi tất cả bản nháp trong thư mục Merge Tools
số nguyên tắc = 0
Do While fldDraft.Items.count> 0
Đặt msg = fldDraft.Items (1)
msg.Gửi
intCount = intCount + 1
Vòng lặp
If Not (msg Is Nothing) Thì Đặt msg = Nothing
Đặt fldDraft = Không có gì
MsgBox intCount & "tin nhắn đã gửi", vbInformation + vbOKOnly

End Sub
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào các cậu. Tôi nghĩ rằng tôi muốn chia sẻ. Đây là mã của tôi để gửi tất cả các bản nháp:
Sub SendAllDrafts () 'Bởi jamesmalcolmwood@gmail.com

If MsgBox ("Bạn có chắc chắn muốn gửi TẤT CẢ các mục trong thư mục bản nháp của mình không?", _
vbQuestion + vbYesNo) <> vbYes Sau đó thoát Sub

Dim myNamespace Như Outlook.NameSpace 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến
Đặt myNamespace = Application.GetNamespace ("MAPI") 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến
Đặt Application.ActiveExplorer.CurrentFolder = _
myNamespace.GetDefaultFolder (olFolderInbox) 'Thay đổi chế độ xem thành Hộp thư đến để tránh lỗi nội tuyến

Làm mờ fldDraft dưới dạng MAPIFolder, msg dưới dạng Outlook.MailItem, intCount dưới dạng số nguyên
Đặt fldDraft = Outlook.GetNamespace ("MAPI"). GetDefaultFolder (olFolderDrafts) 'Gửi tất cả bản nháp trong thư mục bản nháp chính của bạn. Đối với một thư mục con, hãy thêm .Folders ("tên thư mục")
số nguyên tắc = 0
Do While fldDraft.Items.count> 0
Đặt msg = fldDraft.Items (1)
msg.Gửi
intCount = intCount + 1
Vòng lặp
If Not (msg Is Nothing) Thì Đặt msg = Nothing
Đặt fldDraft = Không có gì
MsgBox intCount & "tin nhắn đã gửi", vbInformation + vbOKOnly

End Sub
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL