尝试处理邮件项目对象时,错误424对象是必需的。

时间:2018-10-26 17:17:26

标签: vba outlook outlook-vba outlook-2010

每当收到来自特定发件人的电子邮件时,Outlook规则就会执行代码。它会自动从电子邮件中提取PDF附件,并将它们放入指定的文件夹中。

我们已经使用了9个月了。

从10/22左右开始,它在DAKSave部分中的 For Each oAttachment In MItem.Attachments Error 424 Object Required.崩溃。

我尝试将文件夹更改为本地文件夹,同样的错误。当我尝试使用代码时,在不同的计算机上也会发生此错误(包括以前能够使用该特定代码的计算机)。

我已在regedit中启用了EnableUnsafeClientMailRules。

为什么不起作用?为什么直到现在仍有效?

Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
    Dim oAttachment As Outlook.Attachment
    Dim sSaveFolder As String

    sSaveFolder = "S:\Fax\FAX AUTODUMP\"

    For Each oAttachment In MItem.Attachments
        oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
    Next

End Sub

Sub DAKSave()
    Dim oAttachment As Outlook.Attachment
    Dim sSaveFolder As String

    sSaveFolder = "S:\Fax\FAX AUTODUMP\"

    For Each oAttachment In MItem.Attachments
        oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
    Next

End Sub

我愿意接受可以完成相同自动化任务的建议。

2 个答案:

答案 0 :(得分:1)

您丢失的邮件项目对象,因此请尝试使用ActiveExplorer.Selection.Item(1)

Option Explicit
Sub DAKSave()
    Dim sSaveFolder As String
    sSaveFolder = "S:\Fax\FAX AUTODUMP\"

    Dim MItem As Outlook.MailItem
    Set MItem = ActiveExplorer.Selection.Item(1)

    Dim oAttachment As Outlook.attachment
    For Each oAttachment In MItem.Attachments
        oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
    Next
End Sub

答案 1 :(得分:0)

MItem不会作为参数传递给DAKSave子。 MItem中的DAKSave未定义。仅在SaveAttachmentsToDisk子项中可用。