Outlook VBA将多个附件保存为不同的名称

时间:2016-05-04 14:46:57

标签: vba outlook save attachment

这是我到目前为止所做的:

Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
saveFolder = "P:\ME\TEST\"
Dim dateFormat
dateFormat = Format(Now, "yyyy.mm.dd")
 For Each objAtt In itm.Attachments
        If InStr(objAtt.FileName, "ASDFA ADSF.pdf", vbTextCompare) > 0 Then
      objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf"
        ElseIf InStr(objAtt.FileName, "GASD.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ADSF ADD.pdf"
        ElseIf InStr(objAtt.FileName, "ASDF AD.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " ASDF ASDF.pdf"
        ElseIf InStr(objAtt.FileName, "ASDF AS.pdf", vbTextCompare) > 0 Then
        objAtt.SaveAsFile saveFolder & dateFormat & " asd asdf.pdf"
        Else
        objAtt.SaveAsFile saveFolder & "Caught"
  End If
  Set objAtt = Nothing
 Next
End Sub

我使用随机字母只是为了隐私。我试图通过使用规则和VBA将Outlook自动保存为自动保存电子邮件附件作为具有日期的特定名称。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是,您无权写信P:\ME\TEST\,或者您无法进入If语句进行保存。

您希望将If行设置为> 0

If InStr(objAtt.DisplayName, "BBB AAA.pdf") > 0 Then

如果任何字符位于该名称以外的第一个位置,则它不会进入If。当然,这也可能是你想要的行为。

您可以通过添加:

来测试它是否未在If声明中命中
Else
    objAtt.SaveAsFile saveFolder & "not caught.pdf"
End If

如果您在添加Else代码后未进行保存,请尝试保存到本地文档文件夹。然后,如果您仍然没有获得任何保存,则MailItem没有任何附件。

修改 应该是这样的:

VBA Editor