Macro to Write Rules

Status
Not open for further replies.
S

Stratuser

My firm's server crashed and wiped out all my rules for moving e-mails to

designated folders. Writing all the rules all over again will take several

hours, and I'm thinking it would be faster to write some VBA code to do it.

What is the VBA code that creates a rule that moves any e-mail from any

sender at FIRM A to a folder called "FIRM A"? Also, what is the VBA code

that creates a rule for moving any e-mail that I send to FIRM A to the folder

called "FIRM A"?

Thanks for your help.
 
K

Ken Slovak - [MVP - Outlook]

Is this Outlook 2007? If not there is no VBA that creates a rule. You can do

what a rule does using pure code, but then you would handle the NewMailEx()

event or ItemAdd on the Inbox Items collection, and check each incoming item

for whatever conditions you want and take whatever actions you want entirely

in code.

The sent rule would require handling ItemAdd on the Items collection of the

Sent Items folder.

"Stratuser" <Stratuser> wrote in message

news:0DBA6FA5-4A61-46AF-8408-3CC838BB8697@microsoft.com...
> My firm's server crashed and wiped out all my rules for moving e-mails to
> designated folders. Writing all the rules all over again will take
> several
> hours, and I'm thinking it would be faster to write some VBA code to do
> it.

> What is the VBA code that creates a rule that moves any e-mail from any
> sender at FIRM A to a folder called "FIRM A"? Also, what is the VBA code
> that creates a rule for moving any e-mail that I send to FIRM A to the
> folder
> called "FIRM A"?

> Thanks for your help.
 
S

Stratuser

Unfortunately, I'm a newbie to Outlook VBA. What would be the code for

moving any e-mail to or from Firm_A to the folder named Firm_A (under the

Inbox)? If you can get me this far, I guess I can just alter the code.
wrote:


> Is this Outlook 2007? If not there is no VBA that creates a rule. You can do
> what a rule does using pure code, but then you would handle the NewMailEx()
> event or ItemAdd on the Inbox Items collection, and check each incoming item
> for whatever conditions you want and take whatever actions you want entirely
> in code.

> The sent rule would require handling ItemAdd on the Items collection of the
> Sent Items folder.

> >

>

> "Stratuser" <Stratuser> wrote in message
> news:0DBA6FA5-4A61-46AF-8408-3CC838BB8697@microsoft.com...
> > My firm's server crashed and wiped out all my rules for moving e-mails to
> > designated folders. Writing all the rules all over again will take
> > several
> > hours, and I'm thinking it would be faster to write some VBA code to do
> > it.
> > What is the VBA code that creates a rule that moves any e-mail from any
> > sender at FIRM A to a folder called "FIRM A"? Also, what is the VBA code
> > that creates a rule for moving any e-mail that I send to FIRM A to the
> > folder
> > called "FIRM A"?
> > Thanks for your help.


>
 
K

Ken Slovak - [MVP - Outlook]

Something like this, placed in the ThisOutlookSession class module would

handle incoming emails, but you'd need to know to look in all those

subfolders of Inbox. It takes the part of the sender email address between

the "@" and the first "." as the company name:

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)

Dim oNS As Outlook.NameSpace

Dim oMail As Outlook.MailItem

Dim oMoved As Outlook.MailItem

Dim oTarget As Outlook.MAPIFolder

Dim oInbox As Outlook.MAPIFolder

Dim obj As Object

Dim sIDs() As String

Dim sRecip As String

Dim i As Long

Dim lPos As Long

sIDs = Split(EntryIDCollection, ",")

Set oNS = Application.GetNamespace("MAPI")

Set oInbox = oNS.GetDefaultFolder(olFolderInbox)

For i = LBound(sIDs) To UBound(sIDs)

Set obj = oNS.GetItemFromID(sIDs(i))

If obj.Class = olMail Then

Set oMail = obj

Set obj = Nothing

sRecip = oMail.SenderEmailAddress

lPos = InStr(1, sRecip, "@")

' strip out everything up to and including "@"

sRecip = Right(sRecip, Len(sRecip) - lPos)

lPos = InStr(1, sRecip, ".")

' strip everything from "." on

sRecip = Left(sRecip, lPos - 1)

Set oTarget = oInbox.Folders.Item(sRecip)

If oTarget Is Nothing Then

oInbox.Folders.Add (sRecip)

End If

Set oMoved = oMail.Move(oTarget)

End If

Next

End Sub

For the Sent Items folder handling you'd need something similar, in an

ItemAdd() event handler. You can find examples of ItemAdd() handlers at

www.outlookcode.com, one I can think of offhand for Inbox is "zaphtml", you

can search on that for an example.

"Stratuser" <Stratuser> wrote in message

news:D428727F-B755-4AB6-AC4D-13A3BB9A4B6D@microsoft.com...
> Unfortunately, I'm a newbie to Outlook VBA. What would be the code for
> moving any e-mail to or from Firm_A to the folder named Firm_A (under the
> Inbox)? If you can get me this far, I guess I can just alter the code.
>
 
S

Stratuser

Thanks very much. I pasted this code in, and then I got an internal e-mail.

Apparently the e-mail address for internal senders here is a long

unrecognizable string that starts with a "/". I wrote an "IF" statement to

screen out those e-mails, assuming that external e-mails don't have the same

pattern.

Your code seems to create a new folder for each new external e-mail sender.

I think I'll want to specify the folder names in advance, because there are

about 30 specific firms that will send me e-mails, and the list doesn't

change often.

Thanks for your help.
wrote:


> Something like this, placed in the ThisOutlookSession class module would
> handle incoming emails, but you'd need to know to look in all those
> subfolders of Inbox. It takes the part of the sender email address between
> the "@" and the first "." as the company name:

> Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
> Dim oNS As Outlook.NameSpace
> Dim oMail As Outlook.MailItem
> Dim oMoved As Outlook.MailItem
> Dim oTarget As Outlook.MAPIFolder
> Dim oInbox As Outlook.MAPIFolder
> Dim obj As Object

> Dim sIDs() As String
> Dim sRecip As String

> Dim i As Long
> Dim lPos As Long

> sIDs = Split(EntryIDCollection, ",")

> Set oNS = Application.GetNamespace("MAPI")
> Set oInbox = oNS.GetDefaultFolder(olFolderInbox)

> For i = LBound(sIDs) To UBound(sIDs)
> Set obj = oNS.GetItemFromID(sIDs(i))
> If obj.Class = olMail Then
> Set oMail = obj
> Set obj = Nothing

> sRecip = oMail.SenderEmailAddress
> lPos = InStr(1, sRecip, "@")
> ' strip out everything up to and including "@"
> sRecip = Right(sRecip, Len(sRecip) - lPos)

> lPos = InStr(1, sRecip, ".")
> ' strip everything from "." on
> sRecip = Left(sRecip, lPos - 1)

> Set oTarget = oInbox.Folders.Item(sRecip)
> If oTarget Is Nothing Then
> oInbox.Folders.Add (sRecip)
> End If

> Set oMoved = oMail.Move(oTarget)
> End If
> Next
> End Sub

> For the Sent Items folder handling you'd need something similar, in an
> ItemAdd() event handler. You can find examples of ItemAdd() handlers at
> www.outlookcode.com, one I can think of offhand for Inbox is "zaphtml", you
> can search on that for an example.

> >

>

> "Stratuser" <Stratuser> wrote in message
> news:D428727F-B755-4AB6-AC4D-13A3BB9A4B6D@microsoft.com...
> > Unfortunately, I'm a newbie to Outlook VBA. What would be the code for
> > moving any e-mail to or from Firm_A to the folder named Firm_A (under the
> > Inbox)? If you can get me this far, I guess I can just alter the code.
> >


>
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
P Is it possible to write a macro to email to all addresses of selected contacts? Using Outlook 1
F Can I write a macro that triggers off an Outlook alert Outlook VBA and Custom Forms 1
P Possible to write a macro to print all attachments with specific . Outlook VBA and Custom Forms 1
J How to write a macro to search inbox for certain numbers Outlook VBA and Custom Forms 2
J Outlook 365 Outlook Macro to Sort emails by column "Received" to view the latest email received Outlook VBA and Custom Forms 0
J Macro to send email as alias Outlook VBA and Custom Forms 0
M Outlook Macro to save as Email with a file name format : Date_Timestamp_Sender initial_Email subject Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro GoTo user defined search folder Outlook VBA and Custom Forms 7
D Outlook 2016 Creating an outlook Macro to select and approve Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to send an Email Template from User Defined Contact Form Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to check Cursor & Focus position Outlook VBA and Custom Forms 8
V Macro to mark email with a Category Outlook VBA and Custom Forms 4
M Outlook 2019 Macro not working Outlook VBA and Custom Forms 0
S Outlook 365 Help me create a Macro to make some received emails into tasks? Outlook VBA and Custom Forms 1
Geldner Send / Receive a particular group via macro or single keypress Using Outlook 1
D Auto Remove [EXTERNAL] from subject - Issue with Macro Using Outlook 21
V Macro to count flagged messages? Using Outlook 2
sophievldn Looking for a macro that moves completed items from subfolders to other subfolder Outlook VBA and Custom Forms 7
S Outlook Macro for [Date][Subject] Using Outlook 1
E Outlook - Macro - send list of Tasks which are not finished Outlook VBA and Custom Forms 3
E Macro to block senders domain Outlook VBA and Custom Forms 1
D VBA Macro to Print and Save email to network location Outlook VBA and Custom Forms 1
N VBA Macro To Save Emails Outlook VBA and Custom Forms 1
N Line to move origEmail to subfolder within a reply macro Outlook VBA and Custom Forms 0
Witzker Outlook 2019 Macro to answer a mail with attachments Outlook VBA and Custom Forms 2
A Outlook 2016 Macro to Reply, ReplyAll, or Forward(but with composing new email) Outlook VBA and Custom Forms 0
J Macro to Insert a Calendar Outlook VBA and Custom Forms 8
W Macro to Filter Based on Latest Email Outlook VBA and Custom Forms 6
T Macro to move reply and original message to folder Outlook VBA and Custom Forms 6
D Autosort macro for items in a view Outlook VBA and Custom Forms 2
S HTML to Plain Text Macro - Help Outlook VBA and Custom Forms 1
A Macro to file emails into subfolder based on subject line Outlook VBA and Custom Forms 1
N Help creating a VBA macro with conditional formatting to change the font color of all external emails to red Outlook VBA and Custom Forms 5
S Visual indicator of a certain property or to show a macro toggle Outlook VBA and Custom Forms 2
L Modifying VBA script to delay running macro Outlook VBA and Custom Forms 3
S Macro to extract and modify links from emails Outlook VBA and Custom Forms 3
M Replyall macro with template and auto insert receptens Outlook VBA and Custom Forms 1
L Macro to add Date & Time etc to "drag to save" e-mails Outlook VBA and Custom Forms 17
S Macro for Loop through outlook unread emails Outlook VBA and Custom Forms 2
Globalforester ItemAdd Macro - multiple emails Outlook VBA and Custom Forms 3
S Macro to extract email addresses of recipients in current drafted email and put into clipboard Outlook VBA and Custom Forms 2
Witzker HowTo start a macro with an Button in OL contact form Outlook VBA and Custom Forms 12
Witzker Macro to move @domain.xx of a Spammail to Blacklist in Outlook 2019 Outlook VBA and Custom Forms 7
S Macro for other actions - Outlook 2007 Outlook VBA and Custom Forms 23
C Macro to extract sender name & subject line of incoming emails to single txt file Outlook VBA and Custom Forms 3
L Macro/VBA to Reply All, with the original attachments Outlook VBA and Custom Forms 2
S Macro to move “Re:” & “FWD:” email recieved the shared inbox to a subfolder in outlook Outlook VBA and Custom Forms 0
S Outlook Macro to send auto acknowledge mail only to new mails received to a specific shared inbox Outlook VBA and Custom Forms 0
S Outlook Macro to move reply mail based on the key word in the subjectline Outlook VBA and Custom Forms 0
Eike Move mails via macro triggered by the click of a button? Outlook VBA and Custom Forms 0

Similar threads

Top