基于日期保存附件的 Outlook 规则脚本
Posted
技术标签:
【中文标题】基于日期保存附件的 Outlook 规则脚本【英文标题】:Script for Outlook Rule that Saves Attachment based on date 【发布时间】:2022-01-17 08:33:14 【问题描述】:目的是使用规则触发脚本,如果创建日期等于今天,则保存电子邮件的附件。接下来,该脚本将从文件夹中删除所有创建日期不同的项目。
我可以运行代码,但它什么也没做。
Public Sub SaveAttachments(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
Dim today As Date 'today's date
Dim adate As Date 'date of attachment
today = Date
sSaveFolder = "filepath"
For Each oAttachment In MItem.Attachments
adate = oAttachment.DateCreated
If DateDiff("d", today, adate) = 0 Then
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
End If
Next oAttachment
Dim objFSO, objFolder, objfile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sSaveFolder)
For Each objfile In objFolder.files
If Format(objfile.DateCreated, "DD-MM-YYYY") <> Format(Date, "DD-MM-YYYY") Then
Kill objfile
End If
Next objfile
End Sub
【问题讨论】:
你试过调试这个吗?If
块中的语句是否实际执行?
@TimWilliams,我实际上已经弄清楚了。关键问题是 .DateCreated 方法适用于文件,而不是附件对象。我改用 .Senton 方法,现在一切都按预期工作。我花了太长时间才弄明白。
【参考方案1】:
我想通了。
Public Sub SaveAttachmentsToDisk(MItem As Outlook.MailItem)
Dim oAttachment As Outlook.Attachment
Dim sSaveFolder As String
Dim keepfile As String
sSaveFolder = "filepath"
For Each oAttachment In MItem.Attachments
sdate = MItem.SentOn
If Format(sdate, "DD-MM-YYYY") = Format(Date, "DD-MM-YYYY") Then
oAttachment.SaveAsFile sSaveFolder & oAttachment.DisplayName
keepfile = oAttachment.DisplayName
End If
Next oAttachment
Dim objFSO, objFolder, objfile As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(sSaveFolder)
For Each objfile In objFolder.files
If InStr(objfile.Name, keepfile) = 0 Then
Kill objfile
End If
Next objfile
End Sub
【讨论】:
绝对正确! 我建议如果在关机和午夜之间收到邮件,下次打开 Outlook 时.SentOn
将在Date
之前。不会保存附件。
感谢您的洞察力!我不认为这应该是一个问题,因为我要保存的附件来自每天早上同一时间发送的订阅电子邮件。【参考方案2】:
Outlook 对象模型中的Attachment 类不提供DateCreated
属性。
【讨论】:
是的,我花了很长时间才意识到这一事实以上是关于基于日期保存附件的 Outlook 规则脚本的主要内容,如果未能解决你的问题,请参考以下文章