Saving email attachments

N

Nigel RS

I am using the following code, that runs from an outlook rule, to save
attachments
to a path defined by the contents of the email body. For example in my
email body I have the text string
D:\

I receive an error despite the path and file looking OK.

Help!

Sub ANYPATH(itm As Outlook.MailItem)

Dim objatt As Outlook.Attachment
Dim SaveFolder As String
SaveFolder = Trim(itm.Body)

For Each objatt In itm.Attachments
objatt.SaveAsFile SaveFolder & objatt.DisplayName
Next

Set objatt = Nothing

End Sub
 
K

Ken Slovak - [MVP - Outlook]

The code looks OK offhand, what sort of path strings are you getting? Do the
paths other than the file name actually exist?
 
N

Nigel RS

Hi Ken
I get the path D:\myfile.xls (for example) which is a valid path, yet the
message from Outlook says...

Runtime error - 1525219205
Cannot save the attachment. Filename or directory name is not valid.

In debug: SaveFolder shows: D:\
objatt.name returns: myfile.xls

I wonder if it is the local path mapping that failing, the server is network
based but the rule runs in local client.
 
N

Nigel RS

Hi Ken
I have changed the path by setting it directly

SaveFolder = "D:\"

not from itm.Body and it works OK!!

Very strange, as in debug mode the text string looks identical.
 
N

Nigel RS

Sorted - there are non-printable characters in the MailItem.Body, I have put
in a function to strip these out and everything works as expected.

Cheers
 
K

Ken Slovak - [MVP - Outlook]

Maybe some non-printable character when you take the string from Body? I
wonder if your code is picking up any newlines (vbCRLF) or something like
that?
 
G

GP

Nigel,

I have been looking for a function to remove non-printable characters from
e-mail subject text. Can you share your function?

Thanks, GP
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top