【问题标题】:Script for Outlook Rule that Saves Attachment based on date基于日期保存附件的 Outlook 规则脚本
【发布时间】: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 方法,现在一切都按预期工作。我花了太长时间才弄明白。

标签: vba outlook email-attachments


【解决方案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 属性。

【讨论】:

  • 是的,我花了很长时间才意识到这一事实
猜你喜欢
  • 1970-01-01
  • 2019-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 2015-02-18
  • 1970-01-01
  • 2013-01-02
  • 2021-11-14
相关资源
最近更新 更多