• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 584
  • Last Modified:

Auto save an attachment in a designated directory

I always receive the same attachment everyday at a certain time which I have to save to a particular directory. In doing so I overwrite the original document that I recived the day before. It is an updated file that we use for our intranet

Is there a way I can use a macro to auto save this attachment to the particular directory and overwriting the original?
Also bear in mind that both documents have diferent names. So in order to overwrite I always had to rename the received attachment to match the original in order for the link on the intranet to work. i.e. the original doc is called DocA.xls and the attachment comes in as DocB.xls, so I have to rename the attachement to DocA.xls and overwritting the original.

Is there a way to automate this process?
Thanks!
0
proltdman
Asked:
proltdman
  • 5
  • 3
2 Solutions
 
stefriCommented:
Which version of outlook do you use? If version is 2002 or 2003 and if the mail has always the same subject, you may give a try to this:
in Outlook

'Open VBA (Alt F11)
cut and paste the code below
'-------- start SNIP
' ----- Adjust the value of saveFolder to whatever you want -------
 ----- Adjust the value of theFile to whatever you want -------

Public Sub saveAttachtoDisk (itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment

Dim saveFolder As String, theFile as String
theFile="docB.doc"
saveFolder = "c:\temp\"

    For Each objAtt In itm.Attachments
        objAtt.SaveAsFile saveFolder & "\" & theFile
        Set objAtt = Nothing
    Next
End Sub
'-------------- end SNIP

1) Set Tools/Macros/Security to Medium
2)Close Outlook:  save the project when asked
3) Restart outlook: accept the Enable Macro Warning to get the macro fired then

4)Create a rule
4.1)check mail when they arrive
4.2)with specific words in the subject
4.3)run a script
4.4)select saveAttachtoDisk from the available macros
4.5)stop processing more rules
6)Enjoy
Stefri'
0
 
proltdmanAuthor Commented:
Ok I wil give this a try and let you know. Thanks!
I use outlook 2003

0
 
David LeeCommented:
Hi, stefri.

I'd recommend a minor change to your code.  It's possible that someone might send a message with same subject that the rule is watching for and the code would save any attachment that message had.  It's also possible that a legitimate message with the correct attachment and one or more additional attachments would arrive and the code would save them all, overwriting the file with the last attachment in line.  Both of these can be avoided by simply testing the attachment name to make sure it's the file proltdman is looking for.  Just a thought.
0
Restore individual SQL databases with ease

Veeam Explorer for Microsoft SQL Server delivers an easy-to-use, wizard-driven interface for restoring your databases from a backup. No expert SQL background required. Web interface provides a complete view of all available SQL databases to simplify the recovery of lost database

 
proltdmanAuthor Commented:
Perhaps I should also mention that the attached file also has the day's date appended to it. i.e DocA 24.07.06.xls, hence it comes as a different file each day, but the SUBJECT field always has the same title.
I'm not sure if this will make it any easier to code.
0
 
David LeeCommented:
proltdman,

Here's the code I'd use to handle this.  It goes in a module, not in ThisOutlookSession.  Follow stefri's instructions for creating a rule to fire the script.  This version adds the checks I described earlier and also marks the message as read once it's processed.

Sub SaveFileToDisk(Item As Outlook.MailItem)
    'Make sure the message has just one attachment
    If Item.Attachments.Count = 1 Then
        'Make sure the one attachment's filename beings with DocB
        If Left(Item.Attachments.Item(1).FileName, 4) = "DocB" Then
            'Change the path on the next line
            Item.Attachments.Item(1).SaveAsFile "C:\eeTesting\DocA.xls"
            Item.UnRead = False
            Item.Save
        End If
    End If
End Sub
0
 
proltdmanAuthor Commented:
Thanks BDF,
However, as I said earlier, the incoming attachment is date stamped by the sender to reflect the day of sending, hence DocB comes in as DocB 24.07.06 or DocB 25.07.06 etc etc etc!
Can I use a wild card format in the line
 If Left(Item.Attachments.Item(1).FileName, 4) = "DocB" Then
changed to
 If Left(Item.Attachments.Item(1).FileName, 4) = "DocB *" Then

or won't that work?
0
 
David LeeCommented:
I guess I don't see what the problem is with the code as is.  It doesn't matter what comes after "DocB" since I'm only checking the leftmost four characters which will always be DocB.  There's no difference in checking the leftmost four characters and checking the same four characters and anything that follows, is there?  As to the syntax "DocB *" that won't work with the Left function.  It doesn't understand wildcards.
0
 
proltdmanAuthor Commented:
Sorry i didn't click on the "Left" function you implemented, I will try it now..
0
 
proltdmanAuthor Commented:
Great, it works!

I used the code from BlueDevilFan and set up the rules as suggested by stefri.

Thanks for your efforts guys, I really appareciate it.

I will split the points between you two. I know it's not much but it just shows that I value both of your efforts.

proltdman.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 5
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now