DES
DES

Reputation: 31

Run-time Error 424 Object Required

Im writing a macro for outlook 2010. I get the error on the for each loop even the first time and oFolder does contain a folder. BTW, SaveAttachments runs correctly the first time its just the second time it bombs.

Public Sub processFolder()

    Set objNS = Application.GetNamespace("MAPI")
    Dim oParent As Outlook.MAPIFolder
    Dim oFolder As Outlook.MAPIFolder
    Dim FolderName As String

    Set objInbox = objNS.GetDefaultFolder(olFolderInbox)        

    SaveAttachments (objInbox)


    If (objInbox.Folders.Count > 0) Then
        For Each oFolder In objInbox.Folders
            SaveAttachments (oFolder)
        Next
    End If
End Sub

Sub SaveAttachments(ByVal oParent As Outlook.MAPIFolder)

'Declaration
Dim myItems, myItem, myAttachments, myAttachment As Object
Dim myOrt As String
Dim myOlApp As New Outlook.Application

myOrt = "C:\attachments"

On Error Resume Next

'for all items do...
For Each myItem In oParent.Items

    'point on attachments
    Set myAttachments = myItem.Attachments

    'if there are some...
    If myAttachments.Count > 0 Then

        'add remark to message text
        myItem.Body = myItem.Body & vbCrLf & _
            "Removed Attachments:" & vbCrLf

        'for all attachments do...
        For i = 1 To myAttachments.Count

            'save them to destination
            myAttachments(i).SaveAsFile myOrt & _
                myAttachments(i).DisplayName

            'add name and destination to message text
            myItem.Body = myItem.Body & _
                "File: " & myOrt & _
                myAttachments(i).DisplayName & vbCrLf

        Next i

        'for all attachments do...
        While myAttachments.Count > 0

            'remove it (use this method in Outlook XP)
            'myAttachments.Remove 1

            'remove it (use this method in Outlook 2000)
            myAttachments(1).Delete

        Wend

        'save item without attachments
        myItem.Save
    End If

Next

'free variables
Set myItems = Nothing
Set myItem = Nothing
Set myAttachments = Nothing
Set myAttachment = Nothing
Set myOlApp = Nothing
Set myOlExp = Nothing
Set myOlSel = Nothing

End Sub

Upvotes: 1

Views: 1309

Answers (1)

niton
niton

Reputation: 9179

You have mixed and matched the method of calling SaveAttachments

Choose one or the other

Call SaveAttachments(objInbox)  ' <--- Call requires brackets

SaveAttachments objInbox        ' <--- No brackets

SaveAttachments oFolder         ' <--- No brackets

Upvotes: 1

Related Questions