Přejít k hlavnímu obsahu

Jak vypsat všechny názvy příloh do těla zprávy při psaní e-mailu v aplikaci Outlook?

Autor: Xiaoyang Naposledy změněno: 2020-10-23

Existují nějaké dobré způsoby, jak při psaní e-mailu v Outlooku vložit všechny názvy příloh do těla zprávy? V tomto článku budu mluvit o tom, jak vyřešit tuto práci v Outlooku.

Při psaní e-mailu s kódem VBA uveďte všechny názvy příloh do těla zprávy

Při vytváření e-mailu pomocí jednoduché funkce uveďte všechny názvy příloh do těla zprávy


Při psaní e-mailu s kódem VBA uveďte všechny názvy příloh do těla zprávy

K dokončení tohoto úkolu proveďte následující kroky:

1. Podržte ALT + F11 klávesy pro otevření Microsoft Visual Basic pro aplikace okno.

2. V Microsoft Visual Basic pro aplikace okno, dvakrát klikněte ThisOutlookSession z Project1 (VbaProject.OTM) v podokně otevřete režim a poté zkopírujte a vložte následující kód do prázdného modulu.

Kód VBA: Seznam všech názvů příloh do těla zprávy:

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. Poté pokračujte kliknutím Vložit > Modul, zkopírujte a vložte pod kód do otevřeného prázdného modulu, viz screenshot:

Kód VBA: Seznam všech názvů příloh do těla zprávy:

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 pak klikněte na tlačítko Tools > Reference v Microsoft Visual Basic pro aplikace okno, ve vyskakovacím okně Reference-Project1 v dialogovém okně zaškrtněte Objektová knihovna Microsoft Word možnost z nabídky Dostupné reference seznam, viz screenshot:

5, klikněte OK chcete-li opustit dialogové okno, měli byste do něj přidat tlačítko makra Panel nástrojů Rychlý přístup. V novém Zpráva okno, vyberte Další příkazy z Přizpůsobte panel nástrojů Rychlý přístup rozbalovací nabídka, viz screenshot:

6. V Možnosti aplikace Outlook dialogové okno, proveďte následující operace:

(1.) Vyberte makra z Vyberte příkazy z rozbalovací seznam;

(2.) Klikněte na název makra, které jste právě vložili;

(3.) A pak klikněte přidat tlačítko pro přidání makra do Přizpůsobte panel nástrojů Rychlý přístup.

7. Pak klikněte na tlačítko OK pro zavření dialogového okna, nyní bylo makro tlačítko vloženo do Panel nástrojů Rychlý přístup, viz screenshot:

8. Nyní, když vytvoříte novou zprávu a kliknete na tlačítko makra, budou názvy příloh vloženy nad tělo zprávy, jak je znázorněno na následujícím obrázku:


Při vytváření e-mailu pomocí jednoduché funkce uveďte všechny názvy příloh do těla zprávy

Může se stát, že výše uvedený kód je pro vás tak těžké použít, pokud ano Kutools pro aplikaci Outlook, S jeho Kopírovat jména můžete rychle zkopírovat názvy příloh zprávy a vložit je kamkoli potřebujete.

Poznámka:Použít toto Kopírovat jménaNejprve byste si měli stáhnout soubor Kutools pro aplikaci Outlooka poté tuto funkci rychle a snadno aplikujte.

Po instalaci Kutools pro aplikaci Outlook, udělejte prosím toto:

1. Nejprve prosím vytvořte nový e-mail, který potřebujete, a poté klikněte Kutools > Kopírovat jména v novém Zpráva okno, viz screenshot:

2. A pak se objeví okno s výzvou, které vám připomene, že názvy příloh byly zkopírovány do schránky, viz snímek obrazovky:

3. Nyní stačí stisknout Ctrl + V klávesy dohromady pro vložení názvů příloh do těla zprávy, kterou potřebujete, viz snímek obrazovky:


Více relativních článků:

  • Odpovědět všem s původními přílohami v aplikaci Outlook
  • Normálně, když použijete funkci Odpovědět všem k odpovědi na zprávu všem příjemcům v aplikaci Outlook, původní přílohy budou automaticky ztraceny. Je možné připojit původní přílohy, když odpovíte na všechny v aplikaci Outlook?
  • Stáhnout/uložit přílohy z aplikace Outlook do určité složky
  • Obecně lze všechny přílohy jednoho e-mailu uložit kliknutím na Přílohy> Uložit všechny přílohy v Outlooku. Ale pokud potřebujete uložit všechny přílohy ze všech přijatých e-mailů a přijímání e-mailů, nějaký ideální? Tento článek představí dvě řešení automatického stahování příloh z Outlooku do určité složky.
  • Změnit výchozí umístění pro ukládání přílohy v Outlooku
  • Už jste se unavili hledáním umístění přílohy, které jste zadali při každém spuštění aplikace Outlook? V tomto kurzu vám ukážeme, jak změnit výchozí umístění přílohy. Poté se zadaná složka pro ukládání příloh automaticky otevře při každém uložení příloh, i když restartujete aplikaci Outlook.
  • Odebrat všechny přílohy z e-mailu v aplikaci Outlook
  • Za normálních okolností můžete při prohlížení náhledu e-mailu přílohu odstranit kliknutím pravým tlačítkem myši a výběrem položky Odebrat přílohu. Někdy může být v e-mailové zprávě mnoho příloh a odstraňovat je jednu po druhé bude zdlouhavé. Zde vám nabízíme dva jednoduché triky, jak odstranit všechny přílohy v jednom e-mailu a odstranit všechny přílohy z více e-mailů také v aplikaci Outlook.

Nejlepší nástroje pro produktivitu v kanceláři

Kutools pro aplikaci Outlook - Více než 100 výkonných funkcí, které doplní váš Outlook

🤖 AI Mail Assistant: Okamžité profesionální e-maily s magií umělé inteligence – jedním kliknutím získáte geniální odpovědi, perfektní tón, vícejazyčné ovládání. Transformujte e-maily bez námahy! ...

???? Automatizace e-mailu: Mimo kancelář (k dispozici pro POP a IMAP)  /  Naplánujte odesílání e-mailů  /  Automatická kopie/skrytá kopie podle pravidel při odesílání e-mailu  /  Automatické přeposílání (pokročilá pravidla)   /  Automatické přidání pozdravu   /  Automaticky rozdělte e-maily pro více příjemců na jednotlivé zprávy ...

📨 Email management: Snadné vyvolání e-mailů  /  Blokujte podvodné e-maily podle předmětů a dalších  /  Odstranit duplicitní e-maily  /  pokročilé vyhledávání  /  Konsolidovat složky ...

📁 Přílohy ProDávkové uložení  /  Dávkové odpojení  /  Dávková komprese  /  Automaticky uložit   /  Automatické odpojení  /  Automatické komprimování ...

???? Rozhraní Magic: 😊 Více pěkných a skvělých emotikonů   /  Zvyšte produktivitu své aplikace Outlook pomocí zobrazení s kartami  /  Minimalizujte aplikaci Outlook namísto zavírání ...

???? Zázraky na jedno kliknutí: Odpovědět všem s příchozími přílohami  /   E-maily proti phishingu  /  🕘Zobrazit časové pásmo odesílatele ...

👩🏼‍🤝‍👩🏻 Kontakty a kalendář: Dávkové přidání kontaktů z vybraných e-mailů  /  Rozdělit skupinu kontaktů na jednotlivé skupiny  /  Odeberte připomenutí narozenin ...

Přes 100 Vlastnosti Očekávejte svůj průzkum! Kliknutím sem zobrazíte další informace.

Více       Stažení zdarma      Nákup
 

 

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