Zac Harris
asked on
Macro syntax to add folder to outlook
I am using a macro to move my messages older than a day to specific folders. I have included the code I am using below.
Is there some code that could be added that will create a folder/folder structure if it doesn't exist?
Here is my code:
Is there some code that could be added that will create a folder/folder structure if it doesn't exist?
Here is my code:
Sub MoveAgedMail()
'adjust mailboxNameString to match your name - it will be the way it displays in outlook
mailboxNameString = "email@test.com"
'Check to make sure variable stored string correctly. Opportunity to kill script before it starts.
MsgBox mailboxNameString
'Define outlook objects:
Dim objOutlook As Outlook.Application
Dim objNameSpace As Outlook.NameSpace
Dim objSourceFolder As Outlook.MAPIFolder
Dim obDestFolder As Outlook.MAPIFolder
Dim objVariant As Variant
'Define Counters
'Used for loop to comb through Inbox folder
Dim intCount As Integer
'Different ways to do with logic I did it quick and messy without it will make a copy in original folder and then also another folder that you set for all older mail if you setup similarly.
Dim moveOnce As Integer
' Set variable values
Set objOutlook = Application
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objSourceFolder = objNameSpace.GetDefaultFolder(olFolderInbox)
'Start loop to loop through each item in the inbox
For intCount = objSourceFolder.Items.Count To 1 Step -1
'This defines the variable as the mail item you are currently on in the loop which you can then manipulate, move or apply logic to.
Set objVariant = objSourceFolder.Items.Item(intCount)
DoEvents
'Set move counter to 0 so it will reset upon every loop, it will add 1 if its processed by the logic and at the end if it had been passed by the custom folder rules it will move to the catch Older than a Day folder.
'NOTE: Older than a day folder is completely optional you can leave out and items that dont match any othe folder / sender criteria will just remain in inbox. Completely up to you.
moveOnce = 0
'Used for testing - Used to make sure that the variable was resetting.
'MsgBox "Move Once = " & moveOnce
'If object is a mail item Then...
If objVariant.Class = olMail Then
'Perform logic to determine difference between NOW and the date of the item.
intDateDiff = DateDiff("d", objVariant.SentOn, Now)
'If Date is older than 0 days (or today) then apply the following logic
If intDateDiff > 0 Then
'Define Sender of item
strSender = objVariant.SenderName
'IF Certain Sender then send to a folder
'NOTE: Please check script description for a logical example to follow along with
'Move items older than a day to standalone folder to keep e-mails organized
'Example 1
If strSender = "Voicemail Sender" Then
Set obDestFolder = objNameSpace.Folders(mailboxNameString).Folders("Inbox").Folders("Voicemail")
objVariant.Move obDestFolder
'Add move counter so at the end item wont be moved to two locations
moveOnce = 1
End If
End If
End If
Next
Exit Sub
End Sub
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Works perfectly!
http://msdn.microsoft.com/en-us/library/office/ff862204(v=office.15).aspx
OM Gang