At times, you may want to batch export an Outlook folder with all subfolders and items to a Windows folder. This article will teach you such a method that is applying Outlook VBA.
When you would like to export an Outlook folder to local drive with all items in the same folder structure, if you select to save and export manually, it’ll take you a lot of time. Thus, why don’t you resort to other means, such as any export tools or VBA codes? Here we will unveil such a piece of VBA code to you. It will permit you to achieve it like a breeze.

Export All Subfolders & Items in an Outlook Folder to a Windows Folder
- At the very outset, start your Outlook program.
- Then in the main Outlook window, press the “Alt + F11” key shortcuts.
- Subsequently, the “Microsoft Visual Basic for Applications” window will pop up.
- Next you need to open a blank module and copy the following VBA codes into it.
Private objFileSystem As Object
Private Sub ExportFolderWithAllItems()
Dim objFolder As Outlook.Folder
Dim strPath As String
'Specify the root local folder
'Change it as per your needs
strPath = "E:\Outlook\"
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
'Select a Outlook PST file or Outlook folder
Set objFolder = Outlook.Application.Session.PickFolder
Call ProcessFolders(objFolder, strPath)
MsgBox "Complete", vbExclamation
End Sub
Private Sub ProcessFolders(objCurrentFolder As Outlook.Folder, strCurrentPath As String)
Dim objItem As Object
Dim strSubject, strFileName, strFilePath As String
Dim objSubfolder As Outlook.Folder
'Create the local folder based on the Outlook folder
strCurrentPath = strCurrentPath & objCurrentFolder.Name
objFileSystem.CreateFolder strCurrentPath
For Each objItem In objCurrentFolder.Items
strSubject = objItem.Subject
'Remove unsupported characters in the subject
strSubject = Replace(strSubject, "/", " ")
strSubject = Replace(strSubject, "\", " ")
strSubject = Replace(strSubject, ":", "")
strSubject = Replace(strSubject, "?", " ")
strSubject = Replace(strSubject, Chr(34), " ")
strFileName = strSubject & ".msg"
i = 0
Do Until False
strFilePath = strCurrentPath & "\" & strFileName
'Check if there exist a file in the same name
If objFileSystem.FileExists(strFilePath) Then
'Add a sequence order to the file name
i = i + 1
strFileName = strSubject & " (" & i & ").msg"
Else
Exit Do
End If
Loop
'Save as MSG file
objItem.SaveAs strFilePath, olMSG
Next
'Process subfolders recursively
If objCurrentFolder.folders.Count > 0 Then
For Each objSubfolder In objCurrentFolder.folders
Call ProcessFolders(objSubfolder, strCurrentPath & "\")
Next
End If
End Sub
- After that, you need to ensure that your Outlook permits macros in the macro settings.
- Eventually, you can have a try.
- Firstly, back to the new macro window.
- Next click into “ExportFolderWithAllItems” subroutine.
- Then press F5 key button to run this macro.
- After that, you need to select a specific folder.
- Lastly, when you get a message saying “Complete”, you can access the predefined local folder. You’ll find all items have been saved in the same folder structure.
Prevent Data Loss from Outlook Crashes
Perhaps you have ever encountered many Outlook crashes. Most of time, after a restart, Outlook will be able to work as normal. However, there is also a case that our PST file may get corrupted. At that time, you will try best to retrieve your PST data, such as recurring to an experienced tool like DataNumen Outlook Repair. It is able to fix Outlook errors and extract data from compromised PST file without breaking a sweat.
Author Introduction:
Shirley Zhang is a data recovery expert in DataNumen, Inc., which is the world leader in data recovery technologies, including SQL Server repair and outlook repair software products. For more information visit www.datanumen.com


