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

VBA: Generate a list of email senders

我是 VBA 的新手,我正在尝试生成一个列表,其中包含在过去 8 小时内向我的 Outlook 帐户发送过电子邮件的所有人,并将他们放入发件人列表中,但现在它甚至没有进入我的 while 循环。我确定 .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

find子句需要比较时间,但是写的是比较文本"checktime."

这是因为 "checktime" 在引号内,这使它成为字符串的一部分,而不是在引号外充当变量。

尝试将变量移出双引号并将其与 & 运算符连接起来。应该使用单引号来限定日期字符串(这是 Find 函数所期望的):

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

如果您 运行 这段代码并立即查看 window:

,您将能够很容易地看出区别
Debug.Print "[ReceivedTime] > checkTime"
Debug.Print "[ReceivedTime] > '" & checkTime & "'"

参考