Outlook Banter

Outlook Banter (http://www.outlookbanter.com/)
-   Outlook and VBA (http://www.outlookbanter.com/outlook-vba/)
-   -   save attachment macro w/ "run a script" rule (http://www.outlookbanter.com/outlook-vba/70430-save-attachment-macro-w-run.html)

greg April 17th 08 12:20 AM

save attachment macro w/ "run a script" rule
 
hi,

I have the following code i'm having trouble with. it appears to be in the
objects set up. any help is appreciated.

---------------------------------------------
Sub SaveAttachment(MyMail As MailItem)

Dim strID As String
Dim objNS As Outlook.NameSpace
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim strPath As String, strFile As String

strPath = "\\ad\gbs$\Download\HM\"

strID = MyMail.EntryID
Set objNS = Application.GetNamespace("MAPI")
Set objMail = olNS.GetItemFromID(strID)
Set objAttachments = objMail.Attachments

lngCounter = objAttachments.Count

If lngCounter 0 Then

'iterate the attachment object collection
For i = lngCounter To 1 Step -1

strFile = objAttachments.Item(i).FileName

strFile = strPath & strFile

Debug.Print strFile

' save the attachment file
objAttachments.Item(i).SaveAsFile strFile

Next i
End If

Set objMail = Nothing
Set objNS = Nothing
Set objAttachments = Nothing

End Sub


--
______
Regards,
Greg

JP[_3_] April 17th 08 12:59 AM

save attachment macro w/ "run a script" rule
 
You declared "objNS" as the Namespace but you are setting objMail to
"olNS" -- do you see the spelling error there?

Using "Option Explicit" at the top of every module will prevent simple
syntax errors like this.


HTH,
JP


On Apr 16, 7:20*pm, Greg wrote:
hi,

I have the following code i'm having trouble with. it appears to be in the
objects set up. *any help is appreciated.

---------------------------------------------
Sub SaveAttachment(MyMail As MailItem)

* * Dim strID As String
* * Dim objNS As Outlook.NameSpace
* * Dim objMail As Outlook.MailItem
* * Dim objAttachments As Outlook.Attachments
* * Dim strPath As String, strFile As String

* *strPath = "\\ad\gbs$\Download\HM\"

* * strID = MyMail.EntryID
* * Set objNS = Application.GetNamespace("MAPI")
* * Set objMail = olNS.GetItemFromID(strID)
* * Set objAttachments = objMail.Attachments

- snip -

greg April 17th 08 04:22 PM

save attachment macro w/ "run a script" rule
 
thank you. will use Option Explicit going forward.

My next question is how to call this macro from the other procedure?
I need several of them for several rules and the only difference will be the
file path.
-----------------------
Sub Save2HM(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment

End Sub

then

Sub Save2BLP(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\BLP\"
Call SaveAttachment

End Sub
etc.

Thank you

--
______
Regards,
Greg


"JP" wrote:

You declared "objNS" as the Namespace but you are setting objMail to
"olNS" -- do you see the spelling error there?

Using "Option Explicit" at the top of every module will prevent simple
syntax errors like this.


HTH,
JP


On Apr 16, 7:20 pm, Greg wrote:
hi,

I have the following code i'm having trouble with. it appears to be in the
objects set up. any help is appreciated.

---------------------------------------------
Sub SaveAttachment(MyMail As MailItem)

Dim strID As String
Dim objNS As Outlook.NameSpace
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim strPath As String, strFile As String

strPath = "\\ad\gbs$\Download\HM\"

strID = MyMail.EntryID
Set objNS = Application.GetNamespace("MAPI")
Set objMail = olNS.GetItemFromID(strID)
Set objAttachments = objMail.Attachments

- snip -


JP[_3_] April 17th 08 06:31 PM

save attachment macro w/ "run a script" rule
 
I'm finding it difficult to help you because in your first post,
SaveAttachment is accepting a MailItem as an argument, then in your
second post, you ask something completely different and you want to
pass a string, not a MailItem, as an argument.

If you want to use the same macro with different paths, you have to
pass the path to the SaveAttachment macro as an argument. Currently
you have a MailItem (not a string) as the argument for SaveAttachment.

Sub SaveAttachment(MyMail As MailItem)

instead of

Sub SaveAttachment(strPath As String)



If you want to call one macro from another, passing the path to it,
try this:

Sub Save2HM()
strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment(strPath)
End Sub

Then SaveAttachment would accept the path as a string like this:

Sub SaveAttachment(sPath As String)
' more code here
End Sub

But you won't be able to do anything with a MailItem unless you pass
it as an argument or find it in an Explorer or Inspector window.


HTH,
JP

On Apr 17, 11:22*am, Greg wrote:
thank you. will use Option Explicit going forward.

My next question is how to call this macro from the other procedure?
I need several of them for several rules and the only difference will be the
file path.
-----------------------
Sub Save2HM(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment

End Sub

then

Sub Save2BLP(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\BLP\"
Call SaveAttachment

End Sub
etc.

Thank you

--
______
Regards,
Greg




Sue Mosher [MVP-Outlook] April 17th 08 06:51 PM

save attachment macro w/ "run a script" rule
 
First, a macro is an argumentless subroutine, so what you want to call is a sub, not a macro.

It sounds like what you want to do is parameterize the path, in which case, you add it as an argument to the SaveAttachment procedu

Sub SaveAttachment(MyMail As MailItem, strPath as String)

removing, of course, the strPath= statement from that procedure.

To call it, you provide the values for the procedure's arguments:


Sub Save2HM(MyMail As MailItem)
strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment(MyMail, strPath)
End Sub

--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54


"Greg" wrote in message ...
thank you. will use Option Explicit going forward.

My next question is how to call this macro from the other procedure?
I need several of them for several rules and the only difference will be the
file path.
-----------------------
Sub Save2HM(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment

End Sub

then

Sub Save2BLP(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\BLP\"
Call SaveAttachment

End Sub
etc.

Thank you

--
______
Regards,
Greg


"JP" wrote:

You declared "objNS" as the Namespace but you are setting objMail to
"olNS" -- do you see the spelling error there?

Using "Option Explicit" at the top of every module will prevent simple
syntax errors like this.


HTH,
JP


On Apr 16, 7:20 pm, Greg wrote:
hi,

I have the following code i'm having trouble with. it appears to be in the
objects set up. any help is appreciated.

---------------------------------------------
Sub SaveAttachment(MyMail As MailItem)

Dim strID As String
Dim objNS As Outlook.NameSpace
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim strPath As String, strFile As String

strPath = "\\ad\gbs$\Download\HM\"

strID = MyMail.EntryID
Set objNS = Application.GetNamespace("MAPI")
Set objMail = olNS.GetItemFromID(strID)
Set objAttachments = objMail.Attachments

- snip -


greg April 18th 08 08:49 PM

save attachment macro w/ "run a script" rule
 
thank you both for your help. It is greatly appreciated.

--
______
Regards,
Greg


"Sue Mosher [MVP-Outlook]" wrote:

First, a macro is an argumentless subroutine, so what you want to call is a sub, not a macro.

It sounds like what you want to do is parameterize the path, in which case, you add it as an argument to the SaveAttachment procedu

Sub SaveAttachment(MyMail As MailItem, strPath as String)

removing, of course, the strPath= statement from that procedure.

To call it, you provide the values for the procedure's arguments:


Sub Save2HM(MyMail As MailItem)
strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment(MyMail, strPath)
End Sub

--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54


"Greg" wrote in message ...
thank you. will use Option Explicit going forward.

My next question is how to call this macro from the other procedure?
I need several of them for several rules and the only difference will be the
file path.
-----------------------
Sub Save2HM(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\HM\"
Call SaveAttachment

End Sub

then

Sub Save2BLP(MyMail As MailItem)

strPath = "\\ad\gbs$\Download\BLP\"
Call SaveAttachment

End Sub
etc.

Thank you

--
______
Regards,
Greg


"JP" wrote:

You declared "objNS" as the Namespace but you are setting objMail to
"olNS" -- do you see the spelling error there?

Using "Option Explicit" at the top of every module will prevent simple
syntax errors like this.


HTH,
JP


On Apr 16, 7:20 pm, Greg wrote:
hi,

I have the following code i'm having trouble with. it appears to be in the
objects set up. any help is appreciated.

---------------------------------------------
Sub SaveAttachment(MyMail As MailItem)

Dim strID As String
Dim objNS As Outlook.NameSpace
Dim objMail As Outlook.MailItem
Dim objAttachments As Outlook.Attachments
Dim strPath As String, strFile As String

strPath = "\\ad\gbs$\Download\HM\"

strID = MyMail.EntryID
Set objNS = Application.GetNamespace("MAPI")
Set objMail = olNS.GetItemFromID(strID)
Set objAttachments = objMail.Attachments
- snip -




All times are GMT +1. The time now is 03:35 PM.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 2.4.0
Copyright ©2004-2006 OutlookBanter.com