Results 1 to 2 of 2

Thread: [RESOLVED] How to check for file type when using VBA to auto extract attachment from Outlook

  1. #1
    New Member
    Join Date
    Sep 12
    Posts
    2

    Resolved [RESOLVED] How to check for file type when using VBA to auto extract attachment from Outlook

    Hello Everyone

    I am a noob in VBA programming, can only understand basic function and usage also some simple coding modification

    I use the following VBA coding in outlook 2010 to auto extract all attachment from emails that i receive but i face a issue that it also extracts images in the emails as attachment too.

    How can I modify the coding to not save attachment if it does not match certain files types?
    I also need the coding not to save attachment if the file size is more than 3 MB.

    Experts and PROs kindly help.


    VBA:

    Public Sub saveAttachtoDisk(itm As Outlook.MailItem)

    Dim objAtt As Outlook.Attachment
    Dim saveFolder As String
    saveFolder = "c:\temp"

    For Each objAtt In itm.Attachments
    stFileName = saveFolder & "\" & objAtt.DisplayName
    i = 0

    JumpHere:

    If Dir(stFileName) = "" Then
    objAtt.SaveAsFile stFileName
    Else
    i = i + 1
    stFileName = saveFolder & "\" & i & " - " & objAtt.DisplayName
    Goto JumpHere
    End If

    Set objAtt = Nothing

    Next

    itm.Delete

    End Sub

  2. #2
    Fanatic Member
    Join Date
    Sep 12
    Location
    To the moon and then left
    Posts
    577

    Re: How to check for file type when using VBA to auto extract attachment from Outlook

    First off: Try to Avoid Goto's!

    This:
    Code:
    JumpHere:
    
    If Dir(stFileName) = "" Then
    objAtt.SaveAsFile stFileName
    Else
    i = i + 1
    stFileName = saveFolder & "\" & i & " - " & objAtt.DisplayName
    Goto JumpHere
    End If
    is replaced with this:
    Code:
    Do While Dir(stFileName)<>""
    i=i+1
    stFileName = saveFolder & "\" & i & " - " & objAtt.DisplayName 
    Loop
    
    objAtt.SaveAsFile stFileName
    For checking specific File-Types: e.g. "test.pdf" returns "pdf"
    Code:
    Public Function GetExtension(ByVal cF As String) As String
       Dim cT As String
       Dim tmpString() as String
    
       cT = StrReverse(cF)
       tmpString=Split(cT,".")
       GetExtension=StrReverse(tmpString(0))
       End If
    End Function
    To check FileSize: FileLen-Function

    Code:
    MsgBox FileLen("c:\test.txt") 'FileSize in Bytes
    Last edited by Zvoni; Sep 5th, 2012 at 01:44 AM. Reason: I made a mistake in a codeline. Corrected.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •