Bỏ qua nội dung chính

Làm cách nào để liệt kê tất cả các tên phần đính kèm vào nội dung thư khi soạn email trong Outlook?

Có bất kỳ cách tốt nào để chúng tôi chèn tất cả tên tệp đính kèm vào nội dung thư khi soạn email trong Outlook không? Bài viết này, tôi sẽ nói về cách giải quyết công việc này trong Outlook.

Liệt kê tất cả các tên tệp đính kèm vào nội dung thư khi soạn email bằng mã VBA

Liệt kê tất cả các tên tệp đính kèm vào nội dung thư khi soạn email bằng một tính năng đơn giản


Liệt kê tất cả các tên tệp đính kèm vào nội dung thư khi soạn email bằng mã VBA

Vui lòng thực hiện theo các bước sau để hoàn thành tác vụ này:

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

2. Trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp đúp ĐâyOutlookSession từ Project1 (VbaProject.OTM) để mở chế độ, sau đó sao chép và dán mã sau vào mô-đun trống.

Mã VBA: Liệt kê tất cả các tên tệp đính kèm vào nội dung thư:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim xMailItem As MailItem
    If Item.Class = olMail Then
        Set xMailItem = Item
        If xMailItem.Attachments.Count > 0 Then
          AddAttachmentNamesToBody
        End If
    End If
    End Sub

3. Sau đó, nhấp 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: Liệt kê tất cả các tên tệp đính kèm vào nội dung thư:

Public Sub AddAttachmentNamesToBody()
    Dim xMailItem As MailItem
    Dim xAttachment As Attachment
    Dim xFileName As String
   Dim xInspector As Outlook.Inspector
    Dim xDoc As Word.Document
    Dim xWdSelection As Word.Selection
    On Error Resume Next
    Set xMailItem = Outlook.ActiveInspector.CurrentItem
    If xMailItem.Attachments.Count = 0 Then
        Exit Sub
    End If
    xFileName = ""
    For Each xAttachment In xMailItem.Attachments
        If xFileName = "" Then
            xFileName = " <" & xAttachment.FileName & "> "
        Else
            xFileName = xFileName & vbCrLf & " <" & xAttachment.FileName & "> "
        End If
    Next xAttachment
    Set xInspector = Outlook.Application.ActiveInspector()
    Set xDoc = xInspector.WordEditor
    Set xWdSelection = xDoc.Application.Selection
    xWdSelection.HomeKey Unit:=wdStory
    xWdSelection.InsertBefore "Attachments: " & vbCrLf & xFileName & vbCrLf & vbCrLf
    Set xMailItem = Nothing
    End Sub

4. Và sau đó nhấp vào CÔNG CỤ > dự án trong Microsoft Visual Basic cho các ứng dụng cửa sổ, trong cửa sổ bật ra Tài liệu tham khảo-Dự án1 hộp thoại, kiểm tra Thư viện đối tượng Microsoft Word tùy chọn từ Tài liệu tham khảo có sẵn hộp danh sách, xem ảnh chụp màn hình:

5. Nhấp chuột OK để thoát khỏi hộp thoại, sau đó bạn nên thêm nút macro vào Thanh công cụ truy cập nhanh. Trong cái mới Tin nhắn cửa sổ, chọn Các lệnh khác từ Tùy chỉnh thanh công cụ truy cập nhanh thả xuống, xem ảnh chụp màn hình:

6. Trong Tùy chọn Outlook hộp thoại, hãy thực hiện các thao tác sau:

(1.) Chọn Macros từ Chọn lệnh từ danh sách thả xuống;

(2.) Nhấp vào tên macro mà bạn đã chèn ngay bây giờ;

(3.) Và sau đó nhấp vào Thêm để thêm macro vào Tùy chỉnh thanh công cụ truy cập nhanh.

7. Sau đó nhấn vào OK để đóng hộp thoại, bây giờ, nút macro đã được chèn vào Thanh công cụ truy cập nhanh, xem ảnh chụp màn hình:

8. Bây giờ, khi bạn tạo thư mới và nhấp vào nút macro, tên tệp đính kèm sẽ được chèn phía trên nội dung thư như ảnh chụp màn hình sau:


Liệt kê tất cả các tên tệp đính kèm vào nội dung thư khi soạn email bằng một tính năng đơn giản

Có thể đoạn mã trên hơi khó để bạn áp dụng, nếu bạn có Kutools cho Outlook, Với khả Sao chép tên tính năng này, bạn có thể nhanh chóng sao chép tên tệp đính kèm của thư và dán chúng vào bất kỳ đâu bạn cần.

Lưu ý:Để áp dụng điều này Sao chép tên, trước tiên, bạn nên tải xuống Kutools cho Outlook, và sau đó áp dụng tính năng một cách nhanh chóng và dễ dàng.

Sau khi cài đặt Kutools cho Outlook, hãy làm như sau:

1. Trước tiên, hãy tạo email mới bạn cần, sau đó nhấp vào Kutools > Sao chép tên trong cái mới Tin nhắn cửa sổ, xem ảnh chụp màn hình:

2. Và sau đó, một hộp nhắc sẽ bật ra để nhắc bạn tên tệp đính kèm đã được sao chép vào khay nhớ tạm, hãy xem ảnh chụp màn hình:

3. Bây giờ, bạn chỉ cần nhấn Ctrl + V các phím với nhau để dán tên tệp đính kèm vào nội dung thư bạn cần, xem ảnh chụp màn hình:


Các bài viết tương đối hơn:

  • Trả lời tất cả bằng các tệp đính kèm gốc trong Outlook
  • Thông thường, khi bạn áp dụng chức năng Trả lời Tất cả để trả lời thư cho tất cả người nhận trong Outlook, các tệp đính kèm ban đầu sẽ tự động bị mất. Có thể đính kèm tệp đính kèm ban đầu khi trả lời tất cả trong Outlook không?
  • Tải xuống / Lưu tệp đính kèm từ Outlook vào một thư mục nhất định
  • Nói chung, bạn có thể lưu tất cả các tệp đính kèm của một email bằng cách nhấp vào Tệp đính kèm> Lưu Tất cả Tệp đính kèm trong Outlook. Nhưng, nếu bạn cần lưu tất cả các tệp đính kèm từ tất cả các email đã nhận và email đã nhận, thì có lý tưởng nào không? Bài viết này sẽ giới thiệu hai giải pháp để tự động tải xuống tệp đính kèm từ Outlook vào một thư mục nhất định.
  • Thay đổi vị trí lưu tệp đính kèm mặc định trong Outlook
  • Bạn đã chán ngấy với việc tìm vị trí tệp đính kèm mà bạn đã chỉ định mỗi khi khởi chạy Outlook chưa? Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách thay đổi vị trí tệp đính kèm mặc định. Sau đó, thư mục lưu tệp đính kèm được chỉ định sẽ tự động được mở mỗi khi bạn lưu tệp đính kèm ngay cả khi bạn khởi động lại Outlook.
  • Xóa tất cả tệp đính kèm khỏi email trong Outlook
  • Thông thường khi xem trước email, bạn có thể xóa tệp đính kèm bằng cách nhấp chuột phải và chọn mục Xóa tệp đính kèm. Đôi khi có thể có nhiều tệp đính kèm trong một email và sẽ rất tẻ nhạt khi xóa từng tệp một. Ở đây, chúng tôi sắp xếp cho bạn hai thủ thuật dễ dàng để xóa tất cả các tệp đính kèm trong một email và xóa tất cả các tệp đính kèm khỏi nhiều email cũng như trong Outlook.

Công cụ năng suất văn phòng tốt nhất

Kutools cho Outlook - Hơn 100 tính năng mạnh mẽ để tăng cường Outlook của bạn

🤖 Trợ lý thư AI: Email chuyên nghiệp tức thì với phép thuật AI--một cú nhấp chuột để có câu trả lời xuất sắc, giọng điệu hoàn hảo, khả năng thông thạo đa ngôn ngữ. Chuyển đổi email một cách dễ dàng! ...

📧 Tự động hoá email: Vắng Mặt (Có sẵn cho POP và IMAP)  /  Lên lịch gửi email  /  Tự động CC/BCC theo quy định khi gửi Email  /  Tự động chuyển tiếp (Quy tắc nâng cao)   /  Tự động thêm lời chào   /  Tự động chia email nhiều người nhận thành các tin nhắn riêng lẻ hữu ích. Cảm ơn !

📨 Quản lý email: Dễ dàng thu hồi email  /  Chặn email lừa đảo theo chủ đề và những người khác  /  Xóa các email trùng lặp  /  Tìm Kiếm Nâng Cao  /  Hợp nhất các thư mục hữu ích. Cảm ơn !

📁 Tệp đính kèm chuyên nghiệpLưu hàng loạt  /  Tách hàng loạt  /  Nén hàng loạt  /  Tự động lưu   /  Tự động tách  /  Tự động nén hữu ích. Cảm ơn !

🌟 Giao diện ma thuật: 😊Thêm nhiều biểu tượng cảm xúc đẹp và thú vị hơn   /  Tăng năng suất Outlook của bạn với chế độ xem theo thẻ  /  Thu nhỏ Outlook thay vì đóng hữu ích. Cảm ơn !

👍 Kỳ quan chỉ bằng một cú nhấp chuột: Trả lời tất cả bằng tệp đính kèm đến  /   Email chống lừa đảo  /  🕘Hiển thị múi giờ của người gửi hữu ích. Cảm ơn !

👩🏼‍🤝‍👩🏻 Danh bạ & Lịch: Thêm hàng loạt liên hệ từ các email đã chọn  /  Chia nhóm liên hệ thành các nhóm riêng lẻ  /  Xóa lời nhắc sinh nhật hữu ích. Cảm ơn !

Trên 100 tính năng Chờ đợi sự khám phá của bạn! Bấm vào đây để khám phá thêm.

 

 

Comments (12)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Why am I getting "user-defined type not defined" when I get to Step 8?
This comment was minimized by the moderator on the site
Why am I getting "user-defined type not defined" when I get to Step 8?
This comment was minimized by the moderator on the site
When I do this, it always put the attachments at the beginning of the message, no matter where my cursor is located. I then have to copy/paste to the bottom of the email. Is there a way to change that?
This comment was minimized by the moderator on the site
Hello, VMS,
If you want to put the attachments at the the position of your cursor, please replace the second code with following code:

Public Sub AddAttachmentNamesToBody()

Dim xMailItem As MailItem

Dim xAttachment As Attachment

Dim xFileName As String

Dim xInspector As Outlook.Inspector

Dim xDoc As Word.Document

Dim xWdSelection As Word.Selection

On Error Resume Next

Set xMailItem = Outlook.ActiveInspector.CurrentItem

If xMailItem.Attachments.Count = 0 Then

Exit Sub

End If

xFileName = ""

For Each xAttachment In xMailItem.Attachments

If xFileName = "" Then

xFileName = " <" & xAttachment.FileName & "> "

Else

xFileName = xFileName & vbCrLf & " <" & xAttachment.FileName & "> "

End If

Next xAttachment

Set xInspector = Outlook.Application.ActiveInspector()

Set xDoc = xInspector.WordEditor

Set xWdSelection = xDoc.Application.Selection

xWdSelection.InsertBefore "Attachments: " & vbCrLf & xFileName & vbCrLf & vbCrLf

Set xMailItem = Nothing

End Sub

Please try, hope it can help you!
This comment was minimized by the moderator on the site
That worked! Now another favor... How do I exclude certain file types or names? My required company signature contains a PNG file that I would like to exclude.Thank you!!
This comment was minimized by the moderator on the site
To exclude some specific files, please apply the below code, please try it.
Public Sub AddAttachmentNamesToBody()

Dim xMailItem As MailItem

Dim xAttachment As Attachment

Dim xFileName As String

Dim xInspector As Outlook.Inspector

Dim xDoc As Word.Document

Dim xWdSelection As Word.Selection

Dim xExt As String

Dim xFound As Boolean

Dim xExtArr As Variant

On Error Resume Next

xExtArr = Array("docx", "exe") 'change the file extension you want to exclude

Set xMailItem = Outlook.ActiveInspector.CurrentItem

If xMailItem.Attachments.Count = 0 Then

Exit Sub

End If

xFileName = ""

For Each xAttachment In xMailItem.Attachments

xExt = VBA.Mid(xAttachment.FileName, VBA.InStrRev(xAttachment.FileName, ".") + 1)

xFound = False

For i = LBound(xExtArr) To UBound(xExtArr)

If xExt = xExtArr(i) Then

xFound = True

Exit For

End If

Next

If xFound = False Then

If xFileName = "" Then

xFileName = " <" & xAttachment.FileName & "> "

Else

xFileName = xFileName & vbCrLf & " <" & xAttachment.FileName & "> "

End If

End If

Next xAttachment

Set xInspector = Outlook.Application.ActiveInspector()

Set xDoc = xInspector.WordEditor

Set xWdSelection = xDoc.Application.Selection

xWdSelection.InsertBefore "Attachments: " & vbCrLf & xFileName & vbCrLf & vbCrLf

Set xMailItem = Nothing

End Sub
This comment was minimized by the moderator on the site
when I tried this code it sends the attachment names in every email that has attachments.
I want it to only do it when I click the macro.

How do I amend the code to do just that?
This comment was minimized by the moderator on the site
I also don't know how to fix it. Anyone could hep on that?
This comment was minimized by the moderator on the site
This is wonderful -- thank you! Is there also a way to somehow view all the attachment names in an email that has been sent to you from someone else (i.e. received)? For some reason, the file names are not displaying in full unless you hover, which is ridiculous when you regularly have 15 files to sort through.
This comment was minimized by the moderator on the site
Hello,
To List all attachment names in an received email, please copy and pase the below VBA code into the ThisOutlookSession module of the Microsoft Visual Basic for Applications window:

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
Dim xEIDArr As Variant, xEID As Variant, xItem As Object
Dim xAttachment As Attachment
Dim xFileName As String
On Error Resume Next
xEIDArr = Split(EntryIDCollection, ",")
For Each xEID In xEIDArr
Set xItem = Session.GetItemFromID(xEID)
If xItem.Class = olMail Then
xFileName = ""
For Each xAttachment In xItem.Attachments
If IsEmbeddedAttachment(xAttachment) = False Then
If xFileName = "" Then
xFileName = " " & "<" & xAttachment.FileName & ">"
Else
xFileName = xFileName & "
" & " " & "<" & xAttachment.FileName & ">"
End If
End If
Next xAttachment
If xFileName = "" Then Exit Sub
xFileName = "Attachments: " & "
" & xFileName & "
" & "
"
xItem.HTMLBody = "" & xFileName & "" & xItem.HTMLBody
xItem.Save
End If
Next
Set xItem = Nothing
End Sub

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xAttParent As Object
Dim xCID As String, xID As String
Dim xHTML As String
On Error Resume Next
Set xAttParent = Attach.Parent
xCID = ""
xCID = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCID <> "" Then
xHTML = xAttParent.HTMLBody
xID = "cid:" & xCID
If InStr(xHTML, xID) > 0 Then
IsEmbeddedAttachment = True
Else
IsEmbeddedAttachment = False
End If
End If
End Function

After pasting this code, when new emails with attachments arriving in your Outlook, the attachment names will be listed at the top of the message body automatically.
Please try it, hope it can help you!
This comment was minimized by the moderator on the site
this is great. Is there any way to merge this with VMS's request above to exclude some specific files included in signatures (.png, .jpg, etc.)?
This comment was minimized by the moderator on the site
Great, thanks for that. I wonder if it is possible that the list of attachments is only attached when I write to a specific email address?
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations