View Single Post
  #4  
Old March 29th 06, 12:45 PM posted to microsoft.public.outlook.program_vba
Carmi
external usenet poster
 
Posts: 8
Default Run VBA Code from 'new mail message' on standard toolbar

Eric - following on from my last message I would also like to resolve the
addresses when I create the mail based on the Name or number typed into the
inputbox. My reason for this is because there can be a number of projects
for the same client and I may not know what the Project number is.

example Client Name = Akzo
3 separate email address relating to 3 different projects

I changed my code to use the recipient.resolve which works only if their is
a unique address. If there are potentially more than one addresses based on
the information provided then the code as is does not work.

My Current Code is as follows;
Private Sub objMailItem_Open(Cancel As Boolean)
Dim strEmail As String
Dim objRecipient As Recipient
Dim subject As String 'to be used later

With objMailItem

‘My clumsy way of determining if it is a newly created message as I don’t
know the ‘correct event to hook onto.
If .To = "" And .subject = "" Then
'Input messagebox for Client Name or Project Number
strEmail = InputBox("Please Input Appropriate Job Number or Client
Name", _
"Job Number")
'If user does not want to send mail to project mailbox (eg Private)
If strEmail = "" Then Exit Sub
'Use Project Number or Client Name as recipient address
Set objRecipient = objMailItem.Recipients.Add(strEmail)
'Move recipient to CC field
objRecipient.Type = olCC
'Resolve the address to find the correct Project email address eg

objMailItem.Recipients.ResolveAll
End If
End With
End Sub

I want the resolve function to open the check names dialog box if there is
more than one potential match so I can select the right address. I do not to
wait until the message is sent for the check names dialog to appear as
ultimately I want to use some of the properties associated with the project
address to generate the subject line (i.e Auto Generate the Job Number and
client name in the subject line…. That will be another post).

Strangely enough I find that if there is more than one match the user input
from the inputbox is displayed in the To field but when I hit send and select
the correct address from Match Name that the correct address will be
displayed in the CC.

Any other suggestions on how to make better use of the code I have will also
be most welcome.

Sorry for the long post but I hope you can help.

Thanks

Carmi


My Current Code is as follows;
Private Sub objMailItem_Open(Cancel As Boolean)
Dim strEmail As String
Dim objRecipient As Recipient
Dim subject As String 'to be used later

With objMailItem

If .To = "" And .subject = "" Then

'Input messagebox for Client Name or Project Number
strEmail = InputBox("Please Input Appropriate Job Number or Client
Name", _
"Job Number")

'If user does not want to send mail to project mailbox
If strEmail = "" Then Exit Sub

'Use Project Number or Client Name as recipient address
Set objRecipient = objMailItem.Recipients.Add(strEmail)

'Move recipient to CC field
objRecipient.Type = olCC

'Resolve the address to find the correct Project email address eg

If objMailItem.Recipients.ResolveAll = False Then
MsgBox "Please click on Check Name"
End If

End If

End With

End Sub

if there are options. Strangly if I use the Akzo example where there is
more than one project email address resolve will do nothing and 'Akzo' will
display in the

"Carmi" wrote:

Dear Eric - firstly thank you for your help and pointing me to your blog. It
was very helpful as it is written in a way that makes it very easy to
understand (especially the parts about the This OutlookSession and the Class
Module). In all honesty I dont think I fully understand the code related to
Inspector Object all that well but the code works!... well nearly.

I do have a follow on question relating to a discussion between yourself and
Nick on the same blog (1/18/2005 9:06am) concerning the different olMail
events. The (very simple) question is;

What is the event to trap for the creation of a new mail message?

I understand, and can find, the appropriate references for using a
objMailItem_Forward or objMailItem_Reply events but for the life of me cant
find one for creating a new message.

Any direction would be greatly appreciated

Carmi




"Eric Legault [MVP - Outlook]" wrote:

Instead of trapping clicks on the Send button, it would be better to trap
additions to the Inspectors collection. See my blog post he

Getting a Handle on Your E-mails with VBA:
http://blogs.officezealot.com/legaul...cles/2224.aspx

New e-mails can be created by shortcut keys and other methods, so relying on
a button click won't catch all of the situations.

Try resolving during Item_Send, and cancelling the event if an address is
invalid.

--
Eric Legault (Outlook MVP, MCDBA, old school WOSA MCSD, B.A.)
Try Picture Attachments Wizard for Outlook:
http://www.collaborativeinnovations.ca
Blog: http://blogs.officezealot.com/legault/


"Carmi" wrote:

Outlook 2003

I have found and edited the following code (sourced from Sue Mosher) and
assigned it to a button on a customised tool bar but would prefer to have
this run when I click on the 'new mail message' button on the standard tool
bar. Is this possible?

Sub CreateNewMail()

'Creates a new e-mail item
Dim olApp As Outlook.Application
Dim objMail As Outlook.MailItem
Dim strEmail As String

'Set Application
Set olApp = Outlook.Application
'Set new email item
Set objMail = olApp.CreateItem(olMailItem)

'Ask user to record project number
strEmail = InputBox("Please enter Job Number or Client Name", _
"Job Number")
'Set Job Number in BC
objMail.CC = strEmail

'Display the email
objMail.Display

'Resolve project number to find project address
objMail.Recipients.ResolveAll
End Sub

Also the way I am using the 'resolve' does not seem to work. The project
address is not resolved until I hot the send button. This is no big issue
but I if someone could help I would prefer to check the project number and
find the correct address before I hit the send button.

Thanks

Carmi


Ads
 

Mortgages - Debt - Web Advertising - Credit Cards - Bleach 179 . Bleach 180