2015-07-20 30 views
1

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

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 

回答

0

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

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

尝试将变量移出双引号,并将其与&运算符连接起来。单引号应使用限定日期字符串(这是查找功能如何期望它):

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

你就能很容易地看到区别,如果你运行该代码,并期待在不久的窗口:

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

参考

+0

这工作。谢谢! – Briana