Saving attachments from Outlook



Hi there,

I am trying to write a macro that will search my outlook inbox for a
specific subject heading then save the attatchment to a specific folder.

I have picked up this code with help from this site but my VBA skills are
extremely limited and I can't get it to work. When I run it It stops at the
first line and gives this error message:

Compile error:

User-defined type not defined


Sub SaveAttachments()

Set myOLApp = CreateObject("Outlook.Application")

Dim olApp As Outlook.Application
Dim olNs As NameSpace
Dim Fldr As MAPIFolder
Dim MoveToFldr As MAPIFolder
Dim olMi As MailItem
Dim olAtt As Attachment
Dim MyPath As String
Dim i As Long

Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
Set MoveToFldr = Fldr.Folders("eisreq")
MyPath = "I:\EIS\Forms\"

For i = Fldr.Items.Count To 1 Step -1
Set olMi = Fldr.Items(i)
If InStr(1, olMi.Subject, "EIS") > 0 Then
For Each olAtt In olMi.Attachments
If olAtt.Filename = "EIS Request.xls" Then
olAtt.SaveAsFile MyPath & olMi.SenderName & ".xls"
End If
Next olAtt
olMi.Move MoveToFldr
End If
Next i

Set olAtt = Nothing
Set olMi = Nothing
Set Fldr = Nothing
Set MoveToFldr = Nothing
Set olNs = Nothing
Set olApp = Nothing

End Sub

Can anyone tell me what I'm doing wrong?

Any help would be greatfully appreciated.

Thanks in advance


Ron de Bruin

Hi Jamie

You must set a reference (VBE - Tools -
References) to the Outlook Object Library.

Bob Phillips

Set a reference to the Microsoft Outlook type library in the VBE


Thanks a lot for that. I have one further question though.

At the moment this code saves the attachment as the name of the person who
sent it which is great except when someone sends two. If this happens the
first spreadsheet from that person is overwritten. Is there any way around

papifrank -

You can add the date and/or time after the person's name

olAtt.SaveAsFile MyPath & olMi.SenderName & now() & ".xls

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

Similar Threads