Copy mails from many subfolders to 1 foldr

Not open for further replies.


Senior Member
Outlook version
Outlook 2016 32 bit
Email Account
Office 365 Exchange
I have this archive.pst

Within it, there are a lot of folders, sub folder, sub-sub folders...
I would like to have all the separate mails copied (or moved) to 1 folder. The reason behind this is a long story.

Right now, I have to go thru all the individual folders one-by-one and then select-copy all the mails to a new 'main' folder.

Q: Is there an easier way to do this?

Select all (ctrl+a), move to folder command or drag is the easiest non-macro way... a macro could do it with less manual effort. Because you are moving all messages to one folder, testing it is less of a worry - not much it can screw up, but going to the wrong folder or missing some messages.

you'd use a variation of the macro at Print a list of your Outlook folders - rather than printing folder names, you move the contents. (Use a Macro to Move Aged Email in Outlook shows how to move messages).

you can run the print list of folders macro when you are done - if all folder count is 0 then you are done.

this worked here in a test - BUT - it moves the messages to the default data file's inbox. if the folder is elsewhere, you need to use GetFolderPath function at Working with VBA and non-default Outlook Folders to properly identify the folder.

Run it on a parent folder, not the top level of the mailbox - it's supposed to check that the items are mailitems, but just in case it doesn't, move any non-mail subfolders (calendar & contacts etc) you might have, out of the subfolders.

Public strFolders As String
Public Sub GetFolderNames()
    Dim olApp As Outlook.Application
    Dim olNS As Outlook.NameSpace
    Dim olStartFolder As Outlook.MAPIFolder
    Dim lCountOfFound As Long
    lCountOfFound = 0
    Set olApp = New Outlook.Application
    Set olNS = olApp.GetNamespace("MAPI")
    Set olStartFolder = olNS.PickFolder
    ProcessFolder olStartFolder
End Sub
Sub ProcessFolder(CurrentFolder As Outlook.MAPIFolder)
    Dim i As Long
    Dim olNewFolder As Outlook.MAPIFolder
    Dim olTempFolder As Outlook.MAPIFolder
    Dim olTempFolderPath As String
     ' Loop through the items in the current folder.
    Set objDestFolder = Session.GetDefaultFolder(olFolderInbox)
    For i = CurrentFolder.Folders.Count To 1 Step -1
        Set olTempFolder = CurrentFolder.Folders(i)
       If olTempFolder.Name = "Inbox" Then GoTo nextfolder
        olTempFolderPath = olTempFolder.FolderPath
     ' Get the count of items in the folder
         olCount = olTempFolder.Items.Count
     'prints the folder path and name in the VB Editor's Immediate window
         Debug.Print olTempFolderPath & " " & olCount
    On Error Resume Next
    For intCount = olCount To 1 Step -1
        Set objVariant = olTempFolder.Items.Item(intCount)
        If objVariant.Class = olMail Then
              objVariant.Move objDestFolder
              'count the # of items moved
               lngMovedItems = lngMovedItems + 1
      End If
     ' Loop through and search each subfolder of the current folder.
    For Each olNewFolder In CurrentFolder.Folders
         'Don't need to process the Deleted Items folder
        If olNewFolder.Name <> "Deleted Items" Then
            ProcessFolder olNewFolder
        End If
End Sub
Hi Diana, Thanks for the above. I am deeply sorry for the delay. Was away for some time.
To be honest, whilst I do appreciate your above code, I am sorry to say: I hesitated to apply it
(considering your 'reservations'), so I went on to handle the matter 'manually'.
It took a while but then again there were no unforeseen results.
Once again, thanks!

Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
C Copy from one Profile to another Using Outlook 0
M "Attachment Detacher for Outlook" add in, does it update the server copy of the email? Using Outlook 1
C Outlook 365 Copy/Save Emails in Folder Outside Outlook to Show Date Sender Recipient Subject in Header Using Outlook 0
D Copy Appointment Body to Task Body Outlook VBA and Custom Forms 0
M copy field value to custom field Outlook VBA and Custom Forms 0
O In Agenda-view - How to copy an existing item months ahead or back? Using Outlook 0
C Move or copy from field to field Outlook VBA and Custom Forms 0
Z Copy specific email body text Outlook VBA and Custom Forms 0
B Need to Copy an email to a subfolder Outlook VBA and Custom Forms 2
O Outlook 365 - How to create / copy a new contact from an existing one? Using Outlook 5
S Copy Tasks/Reminders from Shared Mailbox to Personal Tasks/Reminders Outlook VBA and Custom Forms 0
A Cannot copy this folder because it may contain private items Using Outlook 0
C Copy Move item won't work Outlook VBA and Custom Forms 2
Z VBA to convert email to task, insert text of email in task notes, and attach copy of original email Outlook VBA and Custom Forms 4
Commodore Move turns into "copy" Using Outlook 3
C Copy Outlook contact field value to another field Outlook VBA and Custom Forms 1
J Copy to calendar function no longer working in outlook 365 Using Outlook 5
F Copy and replace not update contact in another pst Using Outlook 0
B Outlook Business Contact Manager with SQL to Excel, User Defined Fields in BCM don't sync in SQL. Can I use VBA code to copy 1 field to another? BCM (Business Contact Manager) 0
Commodore Folders always closed in move/copy items dialog box Using Outlook 3
N Outlook rules don't create a copy for bcc'ed emails Using Outlook 3
geofferyh Outlook 2010 How to Copy Outlook Attachment to a Specific Folder? Outlook VBA and Custom Forms 3
S Custom Form, copy user field data to message body Outlook VBA and Custom Forms 12
R Copy Outlook Public Folders to a File Server Shared Folder Using Outlook 0
K Outlook Rules: Move a Copy Using Outlook 4
oliv- HOW TO COPY /USE FOLDERS ICONS Outlook VBA and Custom Forms 2
E Copy e-mail body from outlook and insert into excel Outlook VBA and Custom Forms 3
B Copy/Move Exchange inbox to Pop inbox Using Outlook 4
R Sending email copy (*.msg file) of sent email if subject line contains specific string. Outlook VBA and Custom Forms 1
K ind specific Subject line from outlook and copy the content of the email body to exce Outlook VBA and Custom Forms 0
K How to find specific header and copy the mail body Using Outlook 0
J Copy or Export Outlook Mail to Excel Outlook VBA and Custom Forms 6
G Copy Contact field to Appointment Custom Form Field Outlook VBA and Custom Forms 2
G How to Copy Multi Select Listbox Data to Appointment Outlook VBA and Custom Forms 3
Carrie Dickey Outlook 2016 created two calendars titled Calendar1 - appear to be a copy Using Outlook 2
P How to copy and append data from Outlook 2016 message into Excel 2016 workbook Using Outlook 0
Stilgar Relsik Create a rule to copy text from an email and paste it in the subject line. Using Outlook 1
R Macro to copy email to excel - Runtime Error 91 Object Variable Not Set Outlook VBA and Custom Forms 11
H Macro to Copy Specific content from Mail Body and Paste to Excel Outlook VBA and Custom Forms 4
M How to keep reccurence during copy tasks to calendar? Using Outlook 1
Diane Poremsky Copy New Appointments to Another Calendar using VBA Using Outlook 0
Diane Poremsky Use a macro to copy data in Outlook email to Excel workbook Using Outlook 0
C Copy Task to Non-Microsoft PIM "Rainlendar" Using Outlook 0
G VBA Copy draft email to a new email - attachments not copided Using Outlook 7
C Copy email to excel runtime error 5020 Using Outlook 5
I Copy email from folder to folder - FAILS Using Outlook 5
M Copy new appointments created in multiple shared calendars to another exchange calendar Outlook VBA and Custom Forms 1
Q Why can't I copy image with embedded hyperlink from email to Word Using Outlook 0
I How to make a copy of a task Using Outlook 8
F copy data in Custom Field to other folder Outlook VBA and Custom Forms 2

Similar threads