Ugrás a tartalomra

Hogyan mentse az összes mellékletet több e-mailből az Outlook mappájába?

Könnyű menteni az összes mellékletet egy e-mailből az Outlook beépített összes melléklet mentése funkciójával. Ha azonban egyszerre több e-mail mellékletét szeretné menteni, nincs közvetlen funkció. Ismételten alkalmaznia kell az Összes melléklet mentése funkciót minden e-mailben, amíg az összes mellékletet nem menti az e-mailekből. Ez időigényes. Ebben a cikkben két módszert mutatunk be, amelyekkel az összes mellékletet több e-mailből egy adott mappába könnyedén mentheti az Outlook programban.

Mentse az összes mellékletet több e-mailből VBA kóddal ellátott mappába
Több kattintással elmentheti az összes mellékletet több e-mailből mappába egy csodálatos eszközzel


Mentse az összes mellékletet több e-mailből VBA kóddal ellátott mappába

Ez a szakasz egy VBA-kódot mutat be lépésről-lépésre, amelynek segítségével gyorsan elmentheti az összes mellékletet több e-mailből egy adott mappába egyszerre. Kérjük, tegye a következőket.

1. Először létre kell hoznia egy mappát a mellékletek számítógépre történő mentéséhez.

Menj be a dokumentumok mappát, és hozzon létre egy nevű mappát „Mellékletek”. Lásd screenshot:

2. Válassza ki azokat az e-maileket, amelyeket a mellékletek menteni kíván, majd nyomja meg az gombot más + F11 billentyűk megnyitásához Microsoft Visual Basic for Applications ablak.

3. kettyenés betétlap > Modulok megnyitni Modulok ablakba, majd másolja az ablakba a következő VBA kód egyikét.

1. VBA-kód: A mellékletek tömeges mentése több e-mailből (pontosan ugyanazon névmellékletek mentése közvetlenül)

tippek: Ez a kód pontosan ugyanazokat a névmellékleteket menti, ha a fájlnevek után 1, 2, 3 számjegyeket ad hozzá.

Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            GCount = 0
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            GFilepath = xFilePath
            xFilePath = FileRename(xFilePath)
            If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
    GCount = GCount + 1
    xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
    FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
    xHtml = xItem.HTMLBody
    xID = "cid:" & xCid
    If InStr(xHtml, xID) > 0 Then
        IsEmbeddedAttachment = True
    End If
End If
End Function
2. VBA-kód: A mellékletek tömeges mentése több e-mailből (ellenőrizze az ismétlődéseket)
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
Dim xYesNo As Integer
Dim xFlag As Boolean
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
    VBA.MkDir xFolderPath
End If
For Each xMailItem In xSelection
    Set xAttachments = xMailItem.Attachments
    xAttCount = xAttachments.Count
    xSaveFiles = ""
    If xAttCount > 0 Then
        For i = xAttCount To 1 Step -1
            xFilePath = xFolderPath & xAttachments.Item(i).FileName
            xFlag = True
            If VBA.Dir(xFilePath, 16) <> Empty Then
                xYesNo = MsgBox("The file is exists, do you want to replace it", vbYesNo + vbInformation, "Kutools for Outlook")
                If xYesNo = vbNo Then xFlag = False
            End If
            If xFlag = True Then
                xAttachments.Item(i).SaveAsFile xFilePath
                If xMailItem.BodyFormat <> olFormatHTML Then
                    xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
                Else
                    xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
                End If
            End If
        Next i
    End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Megjegyzések:

1) Ha egyazon névmellékleteket egy mappába szeretne menteni, kérjük, alkalmazza a fentieket VBA kód 1. A kód futtatása előtt kattintson a gombra Eszközök > Referenciák, majd ellenőrizze Microsoft Scripting Runtime doboz a Referenciák - Projekt párbeszédablak;

doc mellékletek mentése07

2) Ha meg szeretné ellenőrizni, hogy vannak-e ismétlődő mellékletnevek, kérjük, alkalmazza a VBA 2 kódot. A kód futtatása után megjelenik egy párbeszédpanel, amely emlékezteti Önt arra, hogy cserélje le a másodlagos mellékleteket, válassza a Igen or Nem az Ön igényeinek.

5. megnyomni a F5 gombot a kód futtatásához.

Ezután a kiválasztott e-mailek összes melléklete az 1. lépésben létrehozott mappába kerül. 

Megjegyzések: Lehet, hogy van egy Microsoft Outlook felugró ablak, kattintson a gombra Hagyjuk gombot.


Egy csodálatos eszközzel mentse az összes mellékletet több e-mailből mappába

Ha Ön újonc a VBA-ban, itt nagyon ajánljuk a Az összes melléklet mentése hasznossága Kutools az Outook számára neked. Ezzel a segédprogrammal gyorsan, egyszerre több kattintással mentheti az összes mellékletet több e-mailből, csak az Outlook programban.
Mielőtt alkalmazná a funkciót, kérjük először töltse le és telepítse a Kutools for Outlook programot.

1. Válassza ki a menteni kívánt mellékleteket tartalmazó e-maileket.

Tipp: Több nem szomszédos e-mailt is kijelölhet a Ctrl gombot, és válassza ki őket egyenként;
Vagy válasszon több szomszédos e-mailt a műszak gombot, és válassza ki az első és az utolsó e-mailt.

2. kettyenés Kutools >Melléklet eszközökÖsszes mentése. Lásd a képernyőképet:

3. Ban,-ben Save Settings párbeszédpanelen kattintson a gombbal válassza ki a mappát a mellékletek mentéséhez, majd kattintson a gombra OK gombot.

3. kettyenés OK kétszer a következő felbukkanó párbeszédpanelen, Ezután a kiválasztott e-mailek összes mellékletét a megadott mappába menti egyszerre.

Megjegyzések:

  • 1. Ha az e-mailek alapján különféle mappákba akarja menteni a mellékleteket, ellenőrizze a Hozzon létre almappákat a következő stílusban mezőbe, és válasszon egy mappa stílust a legördülő menüből.
  • 2. Az összes melléklet mentése mellett a mellékleteket bizonyos feltételekkel mentheti is. Például csak azokat a PDF fájlmellékleteket szeretné elmenteni, amelyekben a fájlnév tartalmazza a "Számla" szót, kérjük, kattintson a Speciális beállítások gombra a feltételek kibővítéséhez, majd az alább látható képkonfiguráció szerint konfigurálja.
  • 3. Ha e-mail érkezésekor automatikusan el akarja menteni a mellékleteket, akkor a A mellékletek automatikus mentése funkció segíthet.
  • 4. A mellékletek közvetlenül a kiválasztott e-mailekről történő leválasztásához a Válassza le az összes mellékletet jellemzője Kutools az Outlook számára tehetsz neked egy szívességet.

  Ha ingyenes (60 napos) próbaverziót szeretne kapni a segédprogramról, kattintson a letöltéshez, majd lépjen a művelet végrehajtására a fenti lépések szerint.


Kapcsolódó cikkek

Illesszen be mellékleteket az Outlook e-mail törzsébe
A mellékletek általában a csatolt mezőben jelennek meg egy író e-mailben. Ez az oktatóanyag olyan módszereket tartalmaz, amelyek segítségével könnyedén illesztheti be a mellékleteket az Outlook e-mail törzsébe.

A mellékletek automatikus letöltése / mentése az Outlookból egy adott mappába
Általánosságban elmondható, hogy az e-mail összes mellékletét elmentheti a Mellékletek> Az összes melléklet mentése az Outlook gombra kattintással. De, ha el kell mentenie az összes mellékletet az összes beérkezett e-mailből és e-mailből, ideális? Ez a cikk két megoldást mutat be a mellékletek automatikus letöltésére az Outlook programból egy adott mappába.

Az összes melléklet nyomtatása egy / több e-mailben az Outlook alkalmazásban
Mint tudják, csak akkor nyomtatja ki az e-mail tartalmát, mint például a fejléc, a törzs, ha a Fájl> Nyomtatás gombra kattint a Microsoft Outlook alkalmazásban, a mellékleteket azonban nem. Itt megmutatjuk, hogyan nyomtathatja könnyedén az összes mellékletet egy kiválasztott e-mailben a Microsoft Outlook alkalmazásban.

Szavak keresése az Outlook mellékletében (tartalom) belül
Amikor beírunk egy kulcsszót az Outlook azonnali keresés mezőjébe, az az e-mailek tantárgyaiban, törzsében, mellékletében stb. Keresi a kulcsszót. De most már csak az Outlook programban kell keresnem a kulcsszót a melléklet tartalmában, van ötlet? Ez a cikk bemutatja azokat a részletes lépéseket, amelyek segítségével könnyedén kereshet szavakat az Outlook mellékletben.

Mellékletek megőrzése, amikor az Outlook programban válaszol
Amikor egy e-mailt továbbítunk a Microsoft Outlook alkalmazásban, az e-mailben található eredeti mellékletek az átirányított üzenetben maradnak. Amikor azonban válaszolunk egy e-mailre, az eredeti mellékleteket nem csatoljuk az új válaszüzenetbe. Itt bemutatunk néhány trükköt az eredeti mellékletek megőrzéséről, amikor válaszolunk a Microsoft Outlook programban.


A legjobb irodai hatékonyságnövelő eszközök

Kutools az Outlook számára - Több mint 100 hatékony funkció az Outlook feltöltéséhez

🤖 AI Mail Assistant: Azonnali profi e-mailek mesterséges intelligencia varázslattal – egyetlen kattintással zseniális válaszok, tökéletes hangnem, többnyelvű elsajátítás. Alakítsa át az e-mailezést könnyedén! ...

???? E-mail automatizálás: Hivatalon kívül (POP és IMAP esetén elérhető)  /  Ütemezze az e-mailek küldését  /  Automatikus CC/BCC szabályok szerint e-mail küldésekor  /  Automatikus továbbítás (Speciális szabályok)   /  Automatikus üdvözlet hozzáadása   /  A több címzettnek szóló e-mailek automatikus felosztása egyedi üzenetekre ...

📨 Email Management: Könnyen visszahívhatja az e-maileket  /  Blokkolja az alanyok és mások átverő e-mailjeit  /  Törölje az ismétlődő e-maileket  /  Részletes keresés  /  Mappák összevonása ...

📁 Attachments ProKötegelt mentés  /  Batch Detach  /  Batch tömörítés  /  Automatikus mentés   /  Automatikus leválasztás  /  Automatikus tömörítés ...

🌟 Interface Magic: 😊További szép és menő hangulatjelek   /  Növelje Outlook termelékenységét a füles nézetekkel  /  Minimalizálja az Outlookot a bezárás helyett ...

👍 Csodák egy kattintással: Válasz mindenkinek a bejövő mellékletekkel  /   Adathalászat elleni e-mailek  /  🕘A feladó időzónájának megjelenítése ...

👩🏼‍🤝‍👩🏻 Névjegyek és naptár: Névjegyek kötegelt hozzáadása a kiválasztott e-mailekből  /  Egy kapcsolattartó csoport felosztása egyéni csoportokra  /  Távolítsa el a születésnapi emlékeztetőket ...

Több, mint 100 Jellemzők Várja felfedezését! Kattintson ide, ha többet szeretne megtudni.

 

 

Comments (81)
Rated 3.5 out of 5 · 3 ratings
This comment was minimized by the moderator on the site
Thank you for sharing the code. Unfortunately, I tried both with failure. This is what I got - The macros in this project are disabled. Please refer to the online help or documentation of the host application to determine how to enable macros. Thank you.
This comment was minimized by the moderator on the site
Hi,
Please follow the instructions in the screenshot below to check if macros are enabled in the macro settings in your Outlook. After enabling both options, re-run the VBA code.

https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/macro-enabled.png
This comment was minimized by the moderator on the site
Thank you so much.
Rated 5 out of 5
This comment was minimized by the moderator on the site
Thank you for sharing VBA code. This work like magic and is going to save it lots of time!
This comment was minimized by the moderator on the site
Hello friends!

Thanks for sharing this VBA code.

Is there any way to change the location of the save folder?

I share the pc with some colleagues and in this case I need the files to be saved in a password protected folder which is not located in the documents folder.

How can I make this change?

Thank you in advance
This comment was minimized by the moderator on the site
Hi Fabiana,
Change the line 14
xFolderPath = xFolderPath & "\Attachments\"

to
xFolderPath = "C:\Users\Win10x64Test\Desktop\save attachments\1\"

Here "C:\Users\Win10x64Test\Desktop\save attachments\1\" is the folder path in my case.
Don't forget to end the folder path with a slash "\"
This comment was minimized by the moderator on the site
Hello friends!

Thank you for sharing that VBA code.

Is there any way to change the location of the save folder?

I share the pc with some colleagues and in this case I need the files to be saved in a password protected folder which is not located in the documents folder.

How can I make this change?

Thank you in advance
This comment was minimized by the moderator on the site
If you are trying to run the Code that renames duplicate files and keep getting a "User Type Not Defined" error message here is the code fixed. Instead of the "Dim xFso As FileSystemObject" on line 47 it should be "Dim xFso As Variant"
Also added a Message Box to appear at the end of data transfer.

Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
Set xAttachments = xMailItem.Attachments
xAttCount = xAttachments.Count
xSaveFiles = ""
If xAttCount > 0 Then
For i = xAttCount To 1 Step -1
GCount = 0
xFilePath = xFolderPath & xAttachments.Item(i).FileName
GFilepath = xFilePath
xFilePath = FileRename(xFilePath)
If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
xAttachments.Item(i).SaveAsFile xFilePath
If xMailItem.BodyFormat <> olFormatHTML Then
xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
Else
xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
End If
End If
Next i
End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
MsgBoX prompt:="File Transfer Complete", Title:="Sweatyjalapenos tha Goat"
End Sub

Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As Variant
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
GCount = GCount + 1
xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True

End If
End If
End Function
This comment was minimized by the moderator on the site
Very nice script as of 2022-10-19 works great, for me doesn't seem to change original message by adding text. The only thing I changed is I added message received date time to each file name with the following format so it would nicely sort by date time in Windows folder: "yyyy-mm-dd HH-mm-ss ".

Code:

Dim GCount As Integer
Dim GFilepath As String
Public Sub SaveAttachments()
'Update 20200821
Dim xMailItem As Outlook.MailItem
Dim xAttachments As Outlook.Attachments
Dim xSelection As Outlook.Selection
Dim i As Long
Dim xAttCount As Long
Dim xFilePath As String, xFolderPath As String, xSaveFiles As String, xDateFormat As String
On Error Resume Next
xFolderPath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xSelection = Outlook.Application.ActiveExplorer.Selection
xFolderPath = xFolderPath & "\Attachments\"
If VBA.Dir(xFolderPath, vbDirectory) = vbNullString Then
VBA.MkDir xFolderPath
End If
GFilepath = ""
For Each xMailItem In xSelection
Set xAttachments = xMailItem.Attachments
xAttCount = xAttachments.Count
xSaveFiles = ""
If xAttCount > 0 Then
For i = xAttCount To 1 Step -1
GCount = 0
xDateFormat = Format(xMailItem.ReceivedTime, "yyyy-mm-dd HH-mm-ss ")
xFilePath = xFolderPath & xDateFormat & xAttachments.Item(i).FileName
GFilepath = xFilePath
xFilePath = FileRename(xFilePath)
If IsEmbeddedAttachment(xAttachments.Item(i)) = False Then
xAttachments.Item(i).SaveAsFile xFilePath
If xMailItem.BodyFormat <> olFormatHTML Then
xSaveFiles = xSaveFiles & vbCrLf & "<Error! Hyperlink reference not valid.>"
Else
xSaveFiles = xSaveFiles & "<br>" & "<a href='file://" & xFilePath & "'>" & xFilePath & "</a>"
End If
End If
Next i
End If
Next
Set xAttachments = Nothing
Set xMailItem = Nothing
Set xSelection = Nothing
End Sub

Function FileRename(FilePath As String) As String
Dim xPath As String
Dim xFso As FileSystemObject
On Error Resume Next
Set xFso = CreateObject("Scripting.FileSystemObject")
xPath = FilePath
FileRename = xPath
If xFso.FileExists(xPath) Then
GCount = GCount + 1
xPath = xFso.GetParentFolderName(GFilepath) & "\" & xFso.GetBaseName(GFilepath) & " " & GCount & "." + xFso.GetExtensionName(GFilepath)
FileRename = FileRename(xPath)
End If
xFso = Nothing
End Function

Function IsEmbeddedAttachment(Attach As Attachment)
Dim xItem As MailItem
Dim xCid As String
Dim xID As String
Dim xHtml As String
On Error Resume Next
IsEmbeddedAttachment = False
Set xItem = Attach.Parent
If xItem.BodyFormat <> olFormatHTML Then Exit Function
xCid = ""
xCid = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
If xCid <> "" Then
xHtml = xItem.HTMLBody
xID = "cid:" & xCid
If InStr(xHtml, xID) > 0 Then
IsEmbeddedAttachment = True
End If
End If
End Function
This comment was minimized by the moderator on the site
Hi Oigo,
This is a very useful VBA script. Thank you for sharing it.
This comment was minimized by the moderator on the site
Hi crystal,

sorry for not being clear.

I was trying to use the code above mentioned. However, apparently I was doing something wrong. I was thinking that I might need to amend some parts in the code shown. For instance the path where to save the attachments and maybe some other parts. Therefore I was asking if you could share the code highlighting the parts which needs tailoring and how to tailor them.

Many thanks,
BR
This comment was minimized by the moderator on the site
Hi Rokkie,
Did you get any error prompt when the code runs? Or which line in your code is highlighted? I need more details so I can see where you can modify the code.
This comment was minimized by the moderator on the site
Hey crystal,

completeley new to this VBA. Can you share a code to use which shows where I have to amend with an example? As a Rookie it is a bit difficult to figure it out.

I am working via a Ctrix connection. Could this be a blocker for the macro?

Much appreaciate the help.
This comment was minimized by the moderator on the site
Hi Rookie,
Sorry I don't understand what you mean: "Can you share a code to use which shows where I have to amend with an example?"
And the code operates on selected emails in Outlook, Ctrix Connection does not block the macro.
This comment was minimized by the moderator on the site
Hi, I am running this Code 1 to extract .txt files from separate sub-folders of an inbox. It works great out of one sub-folder but not at all out of another sub-folder. I have tried forwarding the relevant email and attachment into other inboxes but no luck. The files are automatically generated and sent to the different sub-folders and only vary by a single letter in their title

Any help much is appreciated
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations