Перейти до основного матеріалу

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

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

Перерахуйте всі імена вкладень у тіло повідомлення під час складання електронної пошти з кодом VBA

Перерахуйте всі імена вкладень у тіло повідомлення під час складання електронної пошти за допомогою простої функції


Перерахуйте всі імена вкладень у тіло повідомлення під час складання електронної пошти з кодом VBA

Для завершення цього завдання виконайте такі дії:

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

2, в Microsoft Visual Basic для додатків вікно, двічі клацніть ThisOutlookSession від Проект1 (VbaProject.OTM) , щоб відкрити режим, а потім скопіюйте та вставте наступний код у порожній модуль.

Код VBA: Перерахувати всі імена вкладень у тіло повідомлення:

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. Потім продовжуйте клацати Insert > Модулі, скопіюйте та вставте код нижче у відкритий порожній модуль, див. знімок екрана:

Код VBA: Перерахувати всі імена вкладень у тіло повідомлення:

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. А потім клацніть Tools > посилання в Microsoft Visual Basic для додатків вікно, у спливаючому Список літератури-Проект1 діалогове вікно, поставте галочку Бібліотека об’єктів Microsoft Word опція від Доступні посилання вікно списку, див. знімок екрана:

5. Клацання OK щоб вийти з діалогового вікна, вам слід додати кнопку макросу в Панель швидкого доступу. У новому Повідомлення вікно, виберіть Більше команд від Налаштування панелі швидкого доступу випадаюче, див. знімок екрана:

6, в Параметри Outlook у діалоговому вікні виконайте такі операції:

(1.) Виберіть Макрос від Виберіть команди з випадаючий список;

(2.) Клацніть ім’я макросу, яке ви зараз вставили;

(3.) А потім натисніть додавати , щоб додати макрос у Налаштування панелі швидкого доступу.

7. Потім натисніть OK щоб закрити діалогове вікно, кнопка макросу була вставлена ​​в Панель швидкого доступу, див. скріншот:

8. Тепер, коли ви створюєте нове повідомлення та натискаєте кнопку макросу, імена вкладень будуть вставлені над тілом повідомлення, як показано на наступному знімку екрана:


Перерахуйте всі імена вкладень у тіло повідомлення під час складання електронної пошти за допомогою простої функції

Можливо, наведений вище код вам настільки важко застосувати, якщо він є Kutools для Outlook, З його Копіювати імена Ви можете швидко скопіювати імена вкладень повідомлення та вставити їх куди завгодно.

Примітка:Щоб застосувати це Копіювати імена, по-перше, вам слід завантажити Kutools для Outlook, а потім швидко та легко застосувати функцію.

після установки Kutools для Outlook, будь ласка, зробіть так:

1. Спочатку створіть новий електронний лист, який вам потрібен, а потім натисніть Кутулс > Копіювати імена в новому Повідомлення вікно, див. скріншот:

2. А потім з’явиться підказка з нагадуванням, що імена вкладень скопійовані в буфер обміну, див. Знімок екрана:

3. Тепер вам просто потрібно натиснути Ctrl + V клавіші разом, щоб вставити імена вкладень у потрібне тіло повідомлення, див. знімок екрана:


Більше відносних статей:

  • Відповісти всім оригінальними вкладеннями в
  • Зазвичай, коли ви застосовуєте функцію "Відповісти всім", щоб відповісти на повідомлення всім одержувачам у програмі Outlook, оригінальні вкладення будуть автоматично втрачені. Чи можна вкласти оригінальні вкладення, коли відповідаєте усім в Outlook?
  • Завантажте / збережіть вкладення з Outlook в певну папку
  • Взагалі кажучи, ви можете зберегти всі вкладення одного електронного листа, натиснувши вкладення> Зберегти всі вкладення в Outlook. Але, якщо вам потрібно зберегти всі вкладення з усіх отриманих електронних листів та отримання електронних листів, будь-який ідеал? У цій статті представлено два рішення для автоматичного завантаження вкладень із Outlook у певну папку.
  • Змінити місце збереження вкладень за замовчуванням в Outlook
  • Вам набридло знаходити розташування вкладень, яке ви вказували кожного разу під час запуску Outlook? У цьому підручнику ми покажемо вам, як змінити місце вкладення за замовчуванням. Після цього вказана папка збереження вкладень буде відкриватися автоматично кожного разу, коли ви зберігаєте вкладення, навіть якщо перезапускаєте Outlook.
  • Видалити всі вкладення з електронної пошти в Outlook
  • Зазвичай під час попереднього перегляду електронного листа ви можете видалити вкладення, клацнувши правою кнопкою миші, та вибрати пункт Видалити вкладення. Іноді в електронному повідомленні може бути багато вкладень, і видаляти їх по одному буде нудно. Тут ми пропонуємо вам два простих трюки, щоб видалити всі вкладення в одному електронному листі та видалити всі вкладення з декількох електронних листів, а також у Outlook.

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

Kutools для Outlook - Понад 100 потужних функцій, які покращать ваш Outlook

🤖 AI Mail Assistant: Миттєві професійні електронні листи з магією штучного інтелекту – геніальні відповіді одним клацанням, ідеальний тон, багатомовна майстерність. Трансформуйте електронну пошту без зусиль! ...

???? Автоматизація електронної пошти: Поза офісом (доступно для POP та IMAP)  /  Розклад надсилання електронних листів  /  Автоматична копія/прихована копія за правилами під час надсилання електронної пошти  /  Автоматичне пересилання (розширені правила)   /  Автоматично додавати привітання   /  Автоматично розділяйте електронні листи кількох одержувачів на окремі повідомлення ...

📨 Управління електронною поштою: Легко відкликайте електронні листи  /  Блокуйте шахрайські електронні листи за темами та іншими  /  Видалити повторювані електронні листи  /  розширений пошук  /  Консолідація папок ...

📁 Вкладення ProПакетне збереження  /  Пакетне від'єднання  /  Пакетний компрес  /  Автозавантаження   /  Автоматичне від'єднання  /  Автокомпресія ...

???? Магія інтерфейсу: 😊Більше красивих і класних смайликів   /  Підвищте продуктивність Outlook за допомогою вкладок  /  Згорніть Outlook замість того, щоб закривати ...

👍 Дива в один клік: Відповісти всім із вхідними вкладеннями  /   Антифішингові електронні листи  /  🕘Показувати часовий пояс відправника ...

👩🏼‍🤝‍👩🏻 Контакти та календар: Пакетне додавання контактів із вибраних електронних листів  /  Розділіть групу контактів на окремі групи  /  Видаліть нагадування про день народження ...

більше Особливості 100 Чекайте на ваше дослідження! Натисніть тут, щоб дізнатися більше.

 

 

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