使用发件人姓名自动下载附件和重命名

时间:2018-02-12 17:00:05

标签: vba outlook outlook-vba

我有以下代码可以自动保存来自任何传入邮件的附件,并使用日期和时间重命名附件,以免覆盖。

Public Sub AutoSaveAttachment(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
    saveFolder = "C:\temp"
    dateFormat = Format(Now, "mm.dd.yyyy (Hh.Nn)")
        For Each objAtt In itm.Attachments
            If InStr(objAtt.DisplayName, ".pdf") Then
            objAtt.SaveAsFile saveFolder & "\" & "Attch " & dateFormat & "." & "pdf"
        End If
      Set objAtt = Nothing
    Next
End Sub

我想在日期/时间之前添加发件人的姓名。我在下面尝试了这个代码并不起作用。运行时错误。

Sub AttachmentDownloader(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim senderName As String
Dim dateFormat
    dateFormat = Format(Now, "mmddyyyy_(Hh.Nn)")
    senderName = objAtt.senderName & "_"
    saveFolder = "C:\temp"

     For Each objAtt In itm.Attachments
            If InStr(objAtt.DisplayName, ".pdf") _
            Or InStr(objAtt.DisplayName, ".xlsx") _
            Or InStr(objAtt.DisplayName, ".xlsm") _
            Or InStr(objAtt.DisplayName, ".doc") _
            Or InStr(objAtt.DisplayName, ".docx") Then
         objAtt.SaveAsFile saveFolder & "\" & senderName & dateFormat & objAtt.DisplayName

    End If
       Set objAtt = Nothing
    Next
End Sub

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

运行时错误" 424:对象必需"因为您还没有分配到objAtt变量。您已经获得了一个实例化但未分配的对象变量。

这可能是一个Attachment对象,但这会引发一个未找到的"方法或数据成员"错误,因为attachment object没有senderName属性,属于MailItem class

所以,试试:

senderName = itm.senderName & "_"