Extracting all attachments from Outlook to your computer– not one by one

Following up on the popular Extracting Email address from outlook folder and the How to search for folder name in Outlook, and the How to search for Outlook folder by name  I have been asked the following:

“Great response and very helpful. I have one similar problem I just can’t find a resolution to …. In one of my outlook folders I have many hundreds of emails many have attachments – I want to extract all the attachments into a folder (not an outlook folder). I can do this but only one at a time. Is there any way of selecting a bunch of emails and extracting all the attachments at once?“

So I had a look at outlook and sure enough there is no simple way to extract all the attachments of every email in a folder without going through each mail one by one.

There has to be a better way !

So I wrote a little Macro that will do this for you in one simple click Smile

UPDATE: 2 Dec 2015 – This post has been running for over  5 years and still going strong ! Andrew Davis has submitted additional code that allows for the same filename to be saved.

As per usual: when it comes to these things, I have to add my “I take no responsibility whatsoever if this Macro doesn’t work of messes up your Outlook”

I suggest backing it up before you continue further… (gotta say this for legal reasons)

Now that you have backed up your work, please continue:

1. Open Outlook

2. Right-click on this File and save it to your computer where you can find it again. Once it is downloaded, extract the one file in there and place it in the MY DOCUMENTS folder.

3.  In the ZIP file you have just downloaded is the Macro file. So now we need to Import it into Outlook.

4. Outlook 2010: You need to enable the DEVELOPER ribbon (if you haven’t already done so). It looks like this:

image

If you dont have it enabled, then just do the following:

Click on File, Options, Customize Ribbon and then put a Tick on the Developer on the right-hand side.

image

Click OK and it will appear.

5. Click on Developer and then click on Visual Basic

6. Click on File, Import File

7. Select the extracted file : GetEmailAttachments.bas and click on Open

image

8. Click on File, Close and Return to Outlook

You are now ready to use this !

Simple click on Developer tab, click on Macros and then Macros again, select the GetEmailAttachments and click on Run !

image

You will now find under your My Documents folder a new Folder called Email Attachments where all your attachments will be saved.

Hope this helps !



116 Comments on Extracting all attachments from Outlook to your computer– not one by one

    • with pleasure:

      Attribute VB_Name = “GetEmailAttachments”
      Option Explicit

      ‘***********************************************************************
      ‘* Code based on sample code from Martin Green and adapted to my needs *
      ‘***********************************************************************

      Sub GetAttachments()
      On Error Resume Next
      ‘create the folder if it doesnt exists:
      Dim fso, ttxtfile, txtfile, WheretosaveFolder
      Dim objFolders As Object
      Set objFolders = CreateObject(“WScript.Shell”).SpecialFolders

      ‘MsgBox objFolders(“mydocuments”)
      ttxtfile = objFolders(“mydocuments”)

      Set fso = CreateObject(“Scripting.FileSystemObject”)
      Set txtfile = fso.CreateFolder(ttxtfile & “Email Attachments”)
      Set fso = Nothing

      WheretosaveFolder = ttxtfile & “Email Attachments”

      On Error GoTo GetAttachments_err
      ‘ Declare variables
      Dim ns As NameSpace
      Dim Inbox As MAPIFolder
      Dim Item As Object
      Dim Atmt As Attachment
      Dim FileName As String
      Dim i As Integer
      Set ns = GetNamespace(“MAPI”)
      ‘Set Inbox = ns.GetDefaultFolder(olFolderInbox)
      ‘ added the option to select whic folder to export
      Set Inbox = ns.PickFolder

      ‘to handle if the use cancalled folder selection
      If Inbox Is Nothing Then
      MsgBox “You need to select a folder in order to save the attachments”, vbCritical, _
      “Export – Not Found”
      Exit Sub
      End If

      ””

      i = 0
      ‘ Check Inbox for messages and exit of none found
      If Inbox.Items.Count = 0 Then
      MsgBox “There are no messages in the selected folder.”, vbInformation, _
      “Export – Not Found”
      Exit Sub
      End If
      ‘ Check each message for attachments
      For Each Item In Inbox.Items
      ‘ Save any attachments found
      For Each Atmt In Item.Attachments
      ‘ This path must exist! Change folder name as necessary.
      ‘ FileName = “C:Email Attachments” & Atmt.FileName
      ‘if want to add a filter:
      ‘If Right(Atmt.FileName, 3) = “xls” Then

      FileName = WheretosaveFolder & “” & Atmt.FileName
      Atmt.SaveAsFile FileName
      i = i + 1
      Next Atmt
      Next Item
      ‘ Show summary message
      If i > 0 Then
      MsgBox “There were ” & i & ” attached files.” _
      & vbCrLf & “These have been saved to the Email Attachments folder in My Documents.” _
      & vbCrLf & vbCrLf & “Thank you for using Liron Segev – TheTechieGuy’s utility”, vbInformation, “Export Complete”
      Else
      MsgBox “There were no attachments found in any mails.”, vbInformation, “Export – Not Found”
      End If
      ‘ Clear memory
      GetAttachments_exit:
      Set Atmt = Nothing
      Set Item = Nothing
      Set ns = Nothing
      Exit Sub
      ‘ Handle errors
      GetAttachments_err:
      MsgBox “An unexpected error has occurred.” _
      & vbCrLf & “Please note and report the following information.” _
      & vbCrLf & “Macro Name: GetAttachments” _
      & vbCrLf & “Error Number: ” & Err.Number _
      & vbCrLf & “Error Description: ” & Err.Description _
      , vbCritical, “Error!”
      Resume GetAttachments_exit
      End Sub

      • Hello there,
        I have a problem of dragging an dropping email attachments and email messages from outlook 2013 to the container filed on the solution developed in FileMaker v14. I believe its a limitation from Outlook side. Can there be an add in developed for outlook for the same purpose?
        Thanks

  1. hi – i am using outlook 2010 – i have lots of screenshots that have the same name – this awesome macro isn’t working I think because it’s ignoring files with the same name? is there a quick way to rename the incoming files? thanks lots.

  2. Friend, this code is great!
    I use Outlook 2007 and when I run the macro for about 700 emails in a particular folder it saves 400. Am I doing something wrong?
    Can you help me?
    I am very grateful…

    • not sure as this is very personal to your circumstances. What I would probably think is that either your computer times-out or the anti-virtus is not happy with this work. What you can do is split up the emails into two folders each of around 350 mails and run it again

      • First Thanks for responding, note that this code is 10. I discovered what it was, the attachments were named like that. Prepending the “icont” and it worked. Our !!!!! this code was excellent. Congratulations.

  3. it really works fine, thanx

    maybe you would like to know that when i used it in a folder with more than 20k attachments, it crashed
    (error number: 6)

    • yip – it wasn’t built with serious volume in mind but more of a way to show HOW to extract it and that it CAN be done.
      If you have really large folders, best to split them into multiple folders and run the Macro on each.

      thanks for the feedback !

  4. Not too familiar with how VBA macros work, but I was able to adapt this for Outlook 2007.

    Thanks so much for your help :)!

    Tools->Macro->Macros (or Alt+F8)
    Name the macro “GetAttachments”->Create
    Import the .bas file from the download. Save.
    Close VBA

    Return to Outlook.
    Tools->Macro->Macros->GetAttachments

    (Running from the VBA environment will get the correct count, but will not actually save the files to My Documents, it appears it will only actually save to My Documents if run from the menu in Outlook)

    I have an Outlook folder where I receive PDF attachments from a common scanner at work, I was trying to extract 91 files and it took a minute or two to complete the macro, where Outlook will appear unresponsive, but just be patient, especially those that appear to be trying to do more in a shot.

    Anyway I found this tool helpful and I thought I’d contribute notes for those that are trying to adapt this for outlook 2007.

  5. Worked great! Thanks! The only thing I wish it could do is to keep the original date the attachment was sent. Any way to modify this to do it?

  6. Awesome .. just ran it and I can actually see the attachments downloading … just a question .. can I specify the folder to store all downloaded attachments .. or is it automatic

  7. I have a question, can you add to the VB Macro script the ability to tell the difference between read and unread emails and only extract the attachments from unread messages to the Specified output folder? I have users that have hundreds of faxes that are attached to emails come in daily and it takes more time to have to re-download every attachment when they run your script rather than just the ones that are attached to emails that haven’t been read yet. Other than that the script works great for what is was originally designed to do and makes it easy to implement for any beginner or novice user!!

  8. Thanks for this Macro… Saved my 479 attachments…. Initially thought Outlook was hanging. But then read the comments… Great work…

  9. Using Outlook 2010 and getting msg: “The macros in this project are disabled. Please refer to ..user docs.. to determine how to enable macros”, when pressing “Run”. Any suggestions? thanks in advance.

  10. Works amazing on office2013 64 bit- had a lot of log reports – approx 18k+ attachments… All successfully transferred to a folder… Thanks a ton

    • you will find the line in Point number 2 that says “Right-click on this File”. It downloads a ZIP file to your computer. Then when you open the file you will fine the GetEmailAttachments.bas

  11. Already more than enough big-ups for this, but still felt the need to add my own. This is genius! Thanks for your efforts. I did a little amendment to handle the possibility of having more than 1 attachment with the same name (doubtless not the greatest piece of VB coding but it seems to work for me):

    FileName = WheretosaveFolder & “\” & Atmt.FileName

    Dim MyFile As String
    Dim fileExt As Integer
    Dim newFileName As String
    Dim availableName As String

    availableName = “N”
    fileExt = 0
    newFileName = FileName

    Do While availableName = “N”

    MyFile = Dir(newFileName)
    If MyFile “” Then
    fileExt = fileExt + 1
    newFileName = FileName & “.” & fileExt
    Else
    availableName = “Y”
    End If
    Loop

    Atmt.SaveAsFile newFileName

    • This is exactly why i was looking for 🙂
      But can you tell me how can i use this “amendement” ? Where do i have to place it ? I have to edit the initial script ?
      Thanks a lot !

      • Yes you edit the initial script. Insert the code snippet above in between “FileName = WheretosaveFolder…” and “Atmt.SaveAsFile…”. Good luck

  12. Great tool, but I wonder if there is a simple way to add another level of functionality. I work on a Service Desk, and have users that are sent emails that have Outlook items attached to them, and within each Outlook item, there is a Word document attached, of which they need to open and print. To avoid a lengthy process and save masses of time, we were investigating using this tool to export the attachments to a folder, but it only exports the Outlook items. I was wondering if it could be tweaked in any way, to extract attachments at any level, and then export all attachments into the same folder?

  13. This works like a gem. You are a wizard. We owe you all the beer you can handle!
    Two questions BTW…

    Would this extract and save something on the body in the email? E.g.:- A pic file.. like a screen shot pasted directly, not attached?
    What if two or three mails have different attachments but with the same file name? What happens to the similar names ones? Do all get saved to the Folder?

    Good job.. TechieGuy.
    This was one of those very few occassions when I found answered, exactly what I Googled for.
    Your site is awesome.

    “I’ll Be Back”

    Niceguy Nomore

  14. Excellent, thank you so much for this.
    For the people that have problems with the cluttered Inbox, your suggestion of splitting the messages into 350 per folder worked perfectly.

  15. Dear Mr. Liron Segev. Thank you for sharing your code! It worked for me in Outlook 2013 exactly as is! It only took 10 minutes to extract 276 MP3s weighing in at 10.7GB! You saved me about four and a half hours of time, not to mention the astronomical mental health bills I would have acquired if I had to extract all those files manually!

    Thanks again, you rock!
    Suze

  16. It works perfect when the emails are not archived. What if the email has been archived on a particular folder? It seems that it stops when I reach the archived emails.

  17. this was awesome , i had lost everything from external hardrive and thanks to this i was able to get most of my stuff back, it works

    • We got around this by editing the VBA code as follows:

      We put the “Set fso = Nothing” below the if statement:

      ‘ Show summary message
      If i > 0 Then
      MsgBox “There were ” & i & ” attached files.” _
      & vbCrLf & “These have been saved to the Email Attachments folder in My Documents.” _
      & vbCrLf & vbCrLf & “Thank you for using Liron Segev – TheTechieGuy’s utility”, vbInformation, “Export Complete”
      Else
      MsgBox “There were no attachments found in any mails.”, vbInformation, “Export – Not Found”
      End If
      Set fso = Nothing

      We replaced the “FileName = WheretosaveFolder & “\” & Atmt.FileName” with the following line:

      FileName = WheretosaveFolder & “\” & fso.GetBaseName(Atmt.FileName) & i & “.” & fso.GetExtensionName(Atmt.FileName)

      Thanks for a great macro this saved me a lot of time.

      • Hi Andrew,

        Very smart indeed. The question I have is does the file up in the thread have this added VBA code in it? If not, could you be so kind as to post the updated code file that does not save duplicate attachments? I would appreciate it a lot. Thanks.

      • Andrew, I appreciate the quick response. Something isn’t working for me though. I added “Set fso = Nothing” after the End If in the “Show summary Message” block and replaced the line mentioned to:

        FileName = WheretosaveFolder & “\” & fso.GetBaseName(Atmt.FileName) & i & “.” & fso.GetExtensionName(Atmt.FileName)

        After I execute it and select the email folder that contains the attachments, I get the error:

        An unexpected error has occurred.
        Macro Name: GetAttachments
        Error Number: 91
        Error Description: Object variable or With block variable not set

        I’m not familiar with VB code so it probably is something silly but I can’t see it.

        Thank you in advance
        Shelli

        • Shelli make sure you moved the “Set fso = Nothing” from the top of the code. There is one at the top and i believe that is what is causing this issue. If you just added this line than the code at the top of the file is still there….

          Sub GetAttachments()
          On Error Resume Next
          ‘create the folder if it doesnt exists:
          Dim fso, ttxtfile, txtfile, WheretosaveFolder
          Dim objFolders As Object
          Set objFolders = CreateObject(“WScript.Shell”).SpecialFolders

          ‘MsgBox objFolders(“mydocuments”)
          ttxtfile = objFolders(“mydocuments”)

          Set fso = CreateObject(“Scripting.FileSystemObject”)
          Set txtfile = fso.CreateFolder(ttxtfile & “\Email Attachments”)
          ————–> Set fso = Nothing

  18. I’d be glad to but I sadly cannot attach the file as this comment field does not allow for attachments.

    To the author, do you have a way that i could send this file to you or do you have a github account i can submit the changes to?

      • To Velani: I’m was hoping to hear back from the author before I post the script because they did all the original work and I’d like for the author to host the file here. Let’s give them a bit to answer and if I don’t hear back from them i’ll find a way to post it for people to use and give credit where credit is due.

  19. This really did work brilliantly. Can you let me know why it would now say that there is an error after i used it perfectly fine yesterday?

  20. To Author: Can Andrew send you and updated script file that you can upload for everyone’s benefit? This is to address duplicate filenames.

  21. Hi, When I run this macro I get the error message that the task can’t be performed on this type of attachment and then it seems to crash. It gives me an error number which seems to vary.
    Any thoughts?

  22. The Techguy you saved my life thank you.. but now I am getting an error that the macros on the project are disabled please refer to online help or documentation of the host application to determine how to enable macros? HELP… I love this tool.

  23. A great script, I was able to run it on my Outlook 2007 and extract lots of attachments.
    However, the script is running into an error and breaking. I can’t seem to find out which emails its worked on and which it didn’t.
    Any help would be appreciated.

    The error is — “An unexpected error has occurred. Please note and report the following information. Macro Name: GetAttachments. Error Number: -2147286788. Error Description: Cannot save the attachment.”

  24. I am getting following error while running the macro. I am using Outlook 2010.

    An unexpected error has occurred.
    Please note and report the following information.
    Macro Name: GetAttachments
    Error Number: -1560264699
    Error Description: Outlook cannot perform this action on this type of attachment.

  25. i was able to bypass the error by editing the script in the macro.

    I replaced the “On Error GoTo GetAttachments_err” with “On Error Resume Next”.

    This skipped the broken attachment and immediately went on to the next email.

  26. Well written very useful article. There is a problem with the attachment removal in that it crashes on encountering a “Picture (Device Independent Bitmap)”, easiest thing is to test for atmt before trying to build the file name and skip if it is contains the string “…” above.

  27. Thank you for the macro.
    I need to download attachments for the particular date….how do i do that?
    Can you please share me the code for the same?

  28. Veru nice!!! I love it .
    Into some folders I’m having this error.

    Error Nomber:-1629470715
    Error description: Outlook cannot perform this action on this type of attachment”

    Do you now whats happening?

    Regards

5 Trackbacks & Pingbacks

  1. Extracting Email Address from Outlook 2007 folder « The Techie Guy's Blog – IT translated into simple English
  2. Don’t get ripped off – its free: how to extract or export email address from outlook folder « The Techie Guy's Blog – IT translated into simple English
  3. How to search Outlook for a folder name: « The Techie Guy – Liron Segev
  4. Extract Attachments From Outlook 2007
  5. Outlook Plugin Extract Attachments

Add your comment

The video gear you must own to shoot movies like a pro without spending a fortune (hint: equipment is under $30)

If you are a YouTuber, Instagrammer, Viner, Facebook Liver or just want to improve your videos - grab your FREE must-have and yet affordable video gear guide by completing this form and check your email for the guide !

First name:
Last name:
Email










Click me if you want to shoot videos like a pro !
Only sign up if you answer YES to any of these:
You will get this info direct to your mailbox free(unsubscribe at anytime)










Click here for tech info that comes to you !