带有保存附件的代码的规则停止工作

问题描述 投票:0回答:2

我在规则中使用了脚本将附件保存到我的 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

该规则在到达时在电子邮件的主题或正文中搜索特定短语,然后运行脚本。

我希望相关电子邮件的所有附件都保存在指定文件夹中。

vba outlook email-attachments rules
2个回答
0
投票

首先,确保您的规则已运行并调用了脚本。

然后你可以尝试在文件夹路径末尾添加反斜杠:

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
属性值来使文件名唯一。


0
投票

这里也一样。规则运行了一周,将邮件移动到文件夹并保存附件。现在,脚本似乎在保存窗口像往常一样闪烁时运行,只是文件未保存,邮件按规则移动。没有错误,什么都没有。目录中带有反斜杠的脚本基本相同。

Outlook 还简单地删除了一个已保存且正在运行的脚本,就在它停止运行的那一刻,它在尝试运行不存在的脚本时抛出了错误。从那时起,储蓄就不起作用了。也许可能有问题,但我没有找到任何有用的日志。

我解决了这个问题,只需将所有脚本复制粘贴到记事本,从 Outlook 数据文件夹中删除 vbaproject 文件,然后从记事本粘贴回空白处。瞧,它起作用了!

© www.soinside.com 2019 - 2024. All rights reserved.