仅保存今天的电子邮件

Save only emails of today

我正在 Outlook 2010 中创建一个将电子邮件保存到指定文件夹的宏。电子邮件将保存到由宏创建的文件夹中。我要考虑的问题是我在周末或下班时间收到电子邮件的时间。我注意到,当我在周末收到电子邮件并在周一重新打开 outlook 时,宏运行正常并执行它需要做的事情,但周末收到的电子邮件被放入周一文件夹。我怎样才能绕过这个问题。如果我在星期六收到一封电子邮件,我怎样才能拥有宏以便它也为星期六创建文件夹?这是我目前正在处理的代码。

Public Sub SaveMsgs(Item As Outlook.MailItem)
 Dim sPath As String
 Dim dtDate As Date
 Dim sName As String
 Dim enviro As String
 Dim sSender As String
 Dim strFolder As String
 Dim strNewFolder As String
 Dim save_to_folder As String

 enviro = CStr(Environ("USERPROFILE"))

 sName = Item.Subject
 ReplaceCharsForFileName sName, "_"

 sSender = Item.Sender

 dtDate = Item.ReceivedTime
 sName = sSender & " - " & sName & ".msg"

 strNewFolder = Format(Date, "mm-dd-yyyy")
 strFolder = "C:\IT Documents\" & strNewFolder & "\"

 If Len(Dir(strFolder, vbDirectory)) = 0 Then
     MkDir (strFolder)
 End If

 save_to_folder = strFolder

 Item.SaveAs save_to_folder & sName, olMSG
End Sub


Private Sub ReplaceCharsForFileName(sName As String, _
 sChr As String _)

 sName = Replace(sName, "/", sChr)
 sName = Replace(sName, "\", sChr)
 sName = Replace(sName, ":", sChr)
 sName = Replace(sName, "?", sChr)
 sName = Replace(sName, Chr(34), sChr)
 sName = Replace(sName, "<", sChr)
 sName = Replace(sName, ">", sChr)
 sName = Replace(sName, "|", sChr)
End Sub

您似乎打算使用 Item.ReceivedTime 来创建您的文件夹,但在将此值拉入 dtDate 后,它永远不会被使用。

也许可以尝试以下方法:

strNewFolder = Format(dtDate, "mm-dd-yyyy")
                      ^^