VBA:生成电子邮件发件人列表

时间:2015-07-20 21:20:35

标签: vba outlook

我是VBA的新手,我正在尝试生成一个列表,其中列出了在过去8小时内向Outlook帐户发送电子邮件并将其放入senderList的所有人,但现在它甚至都没有进入我的环。我确定.Find("[ReceivedTime] > checkTime")存在问题,但我不知道如何检查这个问题。任何帮助表示赞赏。

Dim myNameSpace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myFolder  As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Dim senderList As String
Dim checkTime As String

checkTime = Format(Now - 0.3, "ddddd h:nn AMPM") 

Set myNameSpace = Application.GetNamespace("MAPI")
Set myInbox = myNameSpace.GetDefaultFolder(olFolderInbox)
Set myFolder = myInbox.Folders("Daily Logs")
Set myItems = myFolder.Items

Set myItem = myItems.Find("[ReceivedTime] > checkTime")

While TypeName(myItem) <> "Nothing"
    senderList = senderList & myItem.SenderName
    Set myItem = myItems.FindNext
Wend

1 个答案:

答案 0 :(得分:0)

find子句需要比较一个时间,但正如所写,它正在比较文本“checktime”。

这是因为“checktime”在引号内,使其成为字符串的一部分,而不是作为变量的引号之外。

尝试将变量从双引号中移出并将其与&amp;联接起来。运营商。应该使用单引号来限定日期字符串(这是Find函数期望它的方式):

Set myItem = myItems.Find("[ReceivedTime] > '" & checkTime & "'")

如果您运行此代码并查看即时窗口,您将能够轻松看到差异:

Debug.Print "[ReceivedTime] > checkTime"
Debug.Print "[ReceivedTime] > '" & checkTime & "'"

<强>参考