Re: How to save attachment automatically in Outlook 2003?



Hello, i read all scipts and i am wondering if it is possible to make this
script for any folder in any pst file?
i have a lot of attachmments spread out over different archives, but i want
to get all the attachmenst out of my mail.
regards Michel


"joannele71" <joannele71@xxxxxxxxxxxxxxxxxxxxxxxxx> schreef in bericht
news:D993199A-441F-42A0-9D57-55CB95420052@xxxxxxxxxxxxxxxx
Hi Sue,

Thank you very much for your explanation, suggestion and help. They are
all
very helpful and the script works very well.

Joanne



"Sue Mosher [MVP-Outlook]" wrote:

Attachments is a collection, not an individual attachment. Like most
collections, you can process it with a For Each loop.

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003
http://www.turtleflock.com/olconfig/index.htm
and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
http://www.outlookcode.com/jumpstart.aspx

"joannele71" <joannele71@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:1B5CD17C-9D53-401E-BE01-5E6C895417CB@xxxxxxxxxxxxxxxx
Thank you very much Sue. Your explanation is very clear and helpful.

I am trying to amend my code based on your suggestion. However, due to
my
limited knowledge, the code is not working. Here is my code. Can you
please
point out my mistakes again?

Sub RunAScriptRuleRoutine(MyMail As MailItem)

Dim myOlApp As Outlook.Application
Dim msg As Outlook.MailItem
Dim myAttachments As Outlook.Attachments

Set msg = MyMail
Set myAttachments = msg.Attachments

msg.Attachments.SaveAsFile "c:\" & _
msg.Attachments.DisplayName


Set msg = Nothing

End Sub

Many thanks




"Sue Mosher [MVP-Outlook]" wrote:

Her code is not a very good example of using a "run a script" rule to
run code because it doesn't use the item that the procedure passes as
an argument. This is a more correct structure:

Sub RunAScriptRuleRoutine(MyMail As MailItem)
Dim strID As String
Dim olNS As Outlook.NameSpace
Dim msg As Outlook.MailItem

strID = MyMail.EntryID
Set olNS = Application.GetNamespace("MAPI")
Set msg = olNS.GetItemFromID(strID)
' put code to process attachments here, e.g.
Debug.Print msg.Attachments.Count

Set msg = Nothing
Set olNS = Nothing
End Sub

These samples show various ways to save attachments that you could
incorporate into the basic structure and run with no conditions:

http://www.fontstuff.com/outlook/oltut01.htm
http://www.outlookcode.com/codedetail.aspx?id=70
http://www.slovaktech.com/code_samples.htm#StripAttachments

--
Sue Mosher, Outlook MVP
Author of Configuring Microsoft Outlook 2003
http://www.turtleflock.com/olconfig/index.htm
and Microsoft Outlook Programming - Jumpstart for
Administrators, Power Users, and Developers
http://www.outlookcode.com/jumpstart.aspx

"Jason B" <JasonB@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:ACAB44FE-F8C4-4D2F-9D42-F53AB19AB744@xxxxxxxxxxxxxxxx
Upon re-reading the original post it appears that she is trying to
save the
attachment only if it is from a particular person. I am not fluent
in VB at
all for the most part, is there a way to cut out some of the
parameters and
make this universal to all incoming emails?

"Sue Mosher [MVP-Outlook]" wrote:

Look at the SaveAs statement. Joannele71's original code uses C:\
as the hard-coded location/

"Jason B" <JasonB@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
news:48CFD33A-34FC-478C-BD5B-AE0230FBCC1D@xxxxxxxxxxxxxxxx
I have played around with this code a little bit and it seems to
execute
within but it doesn't give a dialog bix where I can select a
location and
file name nor can I find a directory where the attachments are
being saved.
Is there a default location I am overlooking within the code?


"joannele71" <joannele71@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in
message
news:401B2B5E-6736-4FF0-A6FB-435B6EADB577@xxxxxxxxxxxxxxxx
Hi Sue,

Thank you for your help. After making the changes as per
your suggestion,
it worked well when I did my testing. My testing was
continuously sending 3
emails to myself and the script was able to save the
attachment to the c:\.
However, I got the error message "rule operation failed"
when it comes to the
real situation. Do you know what should I do? and why?

Thanks


"Sue Mosher [MVP-Outlook]" wrote:

The MailItem object that you should be working with is
Item, the item passed as a parameter to the event handler,
not myItem. You do not need to display it. Just work with
its Attachments collection:

Set myAttachments = Item.Attachments


"joannele71" <joannele71@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote
in message
news:52629FDE-8200-40EC-AEE9-7F243089D5E4@xxxxxxxxxxxxxxxx
Hi
I am trying to find a macro to save the attachment
automatically every time
I receive emails from the same person. The following is
my macro. I have
set up the rule to run the script (macro) when the
condition is met. I
receive three different emails that meet the condition
and they are all
coming at about the same time. However, the script
doesn't work at all and I
got the error message "rule operation failed".
Sometimes, it works for one
email and sometimes, it doesn't work at all. Please
help!! Thanks in
advance.

Or if you have a better way to do this, please let me
know.

Sub SaveAttachment(Item As Outlook.MailItem)
Dim myOlApp As Outlook.Application
Dim myInspector As Outlook.Inspector
Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments

Set myItem =
Application.Session.GetDefaultFolder(olFolderInbox).Items(1)
myItem.Display

Set myOlApp = CreateObject("Outlook.Application")
Set myInspector = myOlApp.ActiveInspector



If Not TypeName(myInspector) = "Nothing" Then
If TypeName(myInspector.CurrentItem) = "MailItem"
Then
Set myItem = myInspector.CurrentItem
Set myAttachments = myItem.Attachments

myAttachments.Item(1).SaveAsFile "c:\" & _
myAttachments.Item(1).DisplayName
myItem.Close olDiscard
End If
Else
' MsgBox "The item is of the wrong type."
myItem.Close olDiscard
End If

End Sub








.