使用Outlook VBA保存附件时出现错误438

问题描述 投票:0回答:1

我拼凑起来,将所有Excel附件从传入邮件保存到本地驱动器文件夹。

它在ThisOutlookSession模块中,我重新启动了Outlook。

[当我发送满足If语句中的条件的测试电子邮件时,我收到>“错误438:对象不支持此属性或方法”。

我不知道哪个对象不支持哪个属性或方法。

至少可以运行我的If语句,因为这仅发生在符合条件的电子邮件中。

Option Explicit

Private WithEvents inboxItems As Outlook.Items

Private Sub Application_Startup()
    Dim outlookApp As Outlook.Application
    Dim objectNS As Outlook.NameSpace
    Set outlookApp = Outlook.Application
    Set objectNS = outlookApp.GetNamespace("MAPI")
    Set inboxItems = objectNS.GetDefaultFolder(olFolderInbox).Items
End Sub

Private Sub inboxItems_ItemAdd(ByVal Item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem

Dim i As Integer
Dim strFolder As String
Dim mySaveName As String
Dim myExt As String
Dim OlMail As Outlook.MailItem

strFolder = "D:\Scripts\VendorProductivity\Daily files"

If TypeName(Item) = "MailItem" Then
    If Item.Subject Like "*Report*" Then
        If Item.Recipient = "Jane Doe" Then
            If Item.Attachments.Count > 0 Then

                'loop through all attachments
                For i = 1 To Item.Attachments.Count

                   mySaveName = Item.Attachments.Item(i).FileName
                   myExt = Split(mySaveName, ".")(1)

                   'Only save files with named extensions
                   Select Case myExt
                       Case "xls", "xlsm", "xlsx"
                           mySaveName = strFolder & "\" & mySaveName
                           Item.Attachments.Item(i).SaveAsFile mySaveName

                       Case Else
                           'do nothing
                   End Select
                Next
                Item.Delete
            End If
        End If
    End If
End If

ExitNewItem:
    Exit Sub

ErrorHandler:
    MsgBox Err.Number & " - " & Err.Description
    Resume ExitNewItem
End Sub
outlook-vba
1个回答
0
投票

MailItem不会公开名为Recipient的属性(单数)。它公开了一个名为Recipients(复数)的属性,但不是字符串属性-它是Recipient对象的集合,这些对象公开了NameAddress等属性。

您是不是要使用SenderName属性?

© www.soinside.com 2019 - 2024. All rights reserved.