这是我到目前为止所做的:
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自动保存为自动保存电子邮件附件作为具有日期的特定名称。我在这里做错了什么?
答案 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
没有任何附件。
修改强> 应该是这样的: