我在规则中使用了脚本将附件保存到我的 C:\ 驱动器上的文件夹中。上周运行过,但现在不行了。
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:\Users\warre\Timesheets_IN"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
该规则在到达时在电子邮件的主题或正文中搜索特定短语,然后运行脚本。
我希望相关电子邮件的所有附件都保存在指定文件夹中。
首先,确保您的规则已运行并调用了脚本。
然后你可以尝试在文件夹路径末尾添加反斜杠:
oAttachment.SaveAsFile sSaveFolder & "\" & oAttachment.DisplayName
或者尝试按以下方式更改文件夹路径字符串:
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
sSaveFolder = "C:\Users\warre\Timesheets_IN\"
For Each oAttachment In MItem.Attachments
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
Next
End Sub
请注意,不同电子邮件中的附件的
DisplayName
属性值可以相同,因此保存到磁盘时可以简单地覆盖文件。考虑向文件名添加任何 ID 以使其唯一。例如,您可以考虑使用 RecievedTime
属性值来使文件名唯一。
这里也一样。规则运行了一周,将邮件移动到文件夹并保存附件。现在,脚本似乎在保存窗口像往常一样闪烁时运行,只是文件未保存,邮件按规则移动。没有错误,什么都没有。目录中带有反斜杠的脚本基本相同。
Outlook 还简单地删除了一个已保存且正在运行的脚本,就在它停止运行的那一刻,它在尝试运行不存在的脚本时抛出了错误。从那时起,储蓄就不起作用了。也许可能有问题,但我没有找到任何有用的日志。
我解决了这个问题,只需将所有脚本复制粘贴到记事本,从 Outlook 数据文件夹中删除 vbaproject 文件,然后从记事本粘贴回空白处。瞧,它起作用了!