My HR department receives hundreds of email daily with employee code in subject line they wanted to save all email to local drive having employee code so that any one can access email offline without providing mail access to whole team..
Their requirement was to read subject line of each email & check for employee code and save email so received employee folder in local drive with same subject line. If there is no folder then new folder to be created automatic, all employee code is like VB12345 & all email to save in C:\EmpPersonal\.
Copy and paste below code in outlook in ThisOutlookSession module:
Public WithEvents olItems As Outlook.Items Private Sub Application_Startup() Dim olApp As Outlook.Application Dim objNS As Outlook.NameSpace Set olApp = Outlook.Application Set objNS = olApp.GetNamespace("MAPI") Set olItems = objNS.GetDefaultFolder(olFolderInbox).Items End Sub Private Sub olItems_ItemAdd(ByVal Item As Object) On Error GoTo ErrorHandler Dim msg As Outlook.MailItem Dim endOfSubject As String Dim destFolder As String Dim myCode As String Dim sName As String Dim regEx As Object Dim matches sName = Item.Subject ReplaceCharsForFileName sName, "_" If TypeName(Item) = "MailItem" Then Set msg = Item ' check if subject field contains CODE Set regEx = CreateObject("VBScript.RegExp") With regEx .Pattern = "\w+\d{5}" .IgnoreCase = True .Global = True End With If regEx.Test(Item.Subject) Then Set matches = regEx.Execute(Item.Subject) myCode = matches(0) Else Exit Sub End If destFolder = "C:/EmpPersonal/" destFolder = destFolder & myCode ' if subfolder doesn't exist, create it If Dir(destFolder, vbDirectory) = "" Then MkDir destFolder End If ' Copy msg to local folder Item.SaveAs destFolder & "/" & sName & ".msg", olMSG End If ProgramExit: Exit Sub ErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ProgramExit End Sub Private Sub ReplaceCharsForFileName(sName As String, _ sChr As String _ ) sName = Replace(sName, "/", sChr) sName = Replace(sName, "\", sChr) sName = Replace(sName, ":", sChr) sName = Replace(sName, "?", sChr) sName = Replace(sName, Chr(34), sChr) sName = Replace(sName, "<", sChr) sName = Replace(sName, ">", sChr) sName = Replace(sName, "|", sChr) End Sub
Do post your feedback on this.....
Cheers!!