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 & "'"
参考
我是 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 & "'"
参考