Przejdź do głównej zawartości

Jak wyświetlić wszystkie nazwy załączników w treści wiadomości podczas tworzenia wiadomości e-mail w Outlooku?

Czy istnieją dobre sposoby na wstawianie wszystkich nazw załączników do treści wiadomości podczas tworzenia wiadomości e-mail w programie Outlook? W tym artykule omówię, jak rozwiązać tę pracę w Outlooku.

Wymień wszystkie nazwy załączników w treści wiadomości podczas tworzenia wiadomości e-mail z kodem VBA

Podczas tworzenia wiadomości e-mail wypisuj wszystkie nazwy załączników w treści wiadomości za pomocą prostej funkcji


Wymień wszystkie nazwy załączników w treści wiadomości podczas tworzenia wiadomości e-mail z kodem VBA

Aby zakończyć to zadanie, wykonaj następujące czynności:

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

2, w Microsoft Visual Basic for Applications kliknij dwukrotnie Ta sesja programu Outlook z Project1 (VbaProject.OTM) okienko, aby otworzyć tryb, a następnie skopiuj i wklej następujący kod do pustego modułu.

Kod VBA: wyświetla wszystkie nazwy załączników w treści wiadomości:

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. Następnie kliknij wstawka > Moduł, skopiuj i wklej poniższy kod do otwartego pustego modułu, zobacz zrzut ekranu:

Kod VBA: wyświetla wszystkie nazwy załączników w treści wiadomości:

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. A następnie kliknij Tools > Referencje Microsoft Visual Basic for Applications okno, w wyskakującym oknie Referencje-projekt 1 okno dialogowe, zaznacz Biblioteka obiektów programu Microsoft Word opcja z Dostępne referencje pole listy, zobacz zrzut ekranu:

5. Kliknij OK aby wyjść z okna dialogowego, należy dodać przycisk makro do pliku Pasek narzędzi szybkiego dostępu. W nowym Wiadomość okno, wybierz Więcej poleceń z Dostosuj pasek narzędzi Szybki dostęp rozwiń, zobacz zrzut ekranu:

6, w Opcje programu Outlook w oknie dialogowym wykonaj następujące operacje:

(1.) Wybierz Makra z Wybierz polecenia z Lista rozwijana;

(2.) Kliknij nazwę makra, którą właśnie wstawiłeś;

(3.) A następnie kliknij Dodaj przycisk, aby dodać makro do pliku Dostosuj pasek narzędzi Szybki dostęp.

7. Następnie kliknij OK aby zamknąć okno dialogowe, teraz przycisk makro został wstawiony do Pasek narzędzi szybkiego dostępuzobacz zrzut ekranu:

8. Teraz, gdy utworzysz nową wiadomość i klikniesz przycisk makro, nazwy załączników zostaną wstawione nad treścią wiadomości, jak pokazano na poniższym zrzucie ekranu:


Podczas tworzenia wiadomości e-mail wypisuj wszystkie nazwy załączników w treści wiadomości za pomocą prostej funkcji

Być może powyższy kod jest dla Ciebie nieco trudny do zastosowania, jeśli tak jest Kutools dla programu Outlook, Z siedzibą w Kopiuj nazwy Dzięki tej funkcji możesz szybko skopiować nazwy załączników wiadomości i wkleić je w dowolnym miejscu.

Uwaga:Aby to zastosować Kopiuj nazwy, po pierwsze, należy pobrać plik Kutools dla programu Outlook, a następnie szybko i łatwo zastosuj tę funkcję.

Po zainstalowaniu Kutools dla programu Outlook, zrób tak:

1. Najpierw utwórz nowy adres e-mail, którego potrzebujesz, a następnie kliknij Kutools > Kopiuj nazwy w nowym Wiadomość okno, patrz zrzut ekranu:

2. Następnie pojawi się okno z przypomnieniem, że nazwy załączników zostały skopiowane do schowka, zobacz zrzut ekranu:

3. Teraz wystarczy nacisnąć Ctrl + V klawisze, aby wkleić nazwy załączników do treści wiadomości, której potrzebujesz, zobacz zrzut ekranu:


Więcej artykułów względnych:

  • Pobierz/zapisz załączniki z programu Outlook do określonego folderu
  • Ogólnie rzecz biorąc, możesz zapisać wszystkie załączniki jednego e-maila, klikając Załączniki> Zapisz wszystkie załączniki w Outlooku. Ale jeśli chcesz zapisać wszystkie załączniki ze wszystkich otrzymanych e-maili i odbieranych e-maili, czy jesteś idealny? W tym artykule przedstawimy dwa rozwiązania do automatycznego pobierania załączników z programu Outlook do określonego folderu.
  • Zmień domyślną lokalizację zapisywania załączników w programie Outlook
  • Czy masz dość szukania lokalizacji załącznika, którą podałeś za każdym razem, gdy uruchamiasz Outlooka? W tym samouczku pokażemy, jak zmienić domyślną lokalizację załącznika. Następnie określony folder zapisywania załączników będzie otwierany automatycznie za każdym razem, gdy zapiszesz załączniki, nawet po ponownym uruchomieniu Outlooka.
  • Usuń wszystkie załączniki z wiadomości e-mail w programie Outlook
  • Zazwyczaj podczas przeglądania wiadomości e-mail można usunąć załącznik, klikając prawym przyciskiem myszy i wybierając opcję Usuń załącznik. Czasami wiadomość e-mail może zawierać wiele załączników i usuwanie ich jeden po drugim będzie uciążliwe. Tutaj przygotowaliśmy dla Ciebie dwie proste sztuczki, aby usunąć wszystkie załączniki z jednego e-maila i usunąć wszystkie załączniki z wielu e-maili, a także w programie Outlook.

Najlepsze narzędzia biurowe

Kutools dla programu Outlook - Ponad 100 zaawansowanych funkcji, które usprawnią Twoje perspektywy

🤖 Asystent poczty AI: Natychmiastowe profesjonalne e-maile z magią AI — genialne odpowiedzi jednym kliknięciem, doskonały ton, biegła znajomość wielu języków. Zmień e-mailing bez wysiłku! ...

📧 Automatyzacja poczty e-mail: Poza biurem (dostępne dla POP i IMAP)  /  Zaplanuj wysyłanie wiadomości e-mail  /  Automatyczne CC/BCC według reguł podczas wysyłania wiadomości e-mail  /  Automatyczne przewijanie (Zasady zaawansowane)   /  Automatyczne dodawanie powitania   /  Automatycznie dziel wiadomości e-mail od wielu odbiorców na pojedyncze wiadomości ...

📨 Zarządzanie e-mail: Łatwe przywoływanie e-maili  /  Blokuj oszukańcze wiadomości e-mail według tematów i innych  /  Usuń zduplikowane wiadomości e-mail  /  Wiecej opcji  /  Konsoliduj foldery ...

📁 Załączniki ProZapisz zbiorczo  /  Odłącz partię  /  Kompresuj wsadowo  /  Automatyczne zapisywanie   /  Automatyczne odłączanie  /  Automatyczna kompresja ...

🌟 Magia interfejsu: 😊Więcej ładnych i fajnych emotikonów   /  Zwiększ produktywność programu Outlook dzięki widokom na kartach  /  Zminimalizuj program Outlook zamiast go zamykać ...

>> Cuda jednym kliknięciem: Odpowiedz wszystkim, dodając przychodzące załączniki  /   E-maile chroniące przed phishingiem  /  🕘Pokaż strefę czasową nadawcy ...

👩🏼‍🤝‍👩🏻 Kontakty i kalendarz: Grupowe dodawanie kontaktów z wybranych e-maili  /  Podziel grupę kontaktów na pojedyncze grupy  /  Usuń przypomnienia o urodzinach ...

O Cechy 100 Poczekaj na eksplorację! Kliknij tutaj, aby dowiedzieć się więcej.

 

 

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