循环和排序电子邮件项目 [英] Looping and sorting email items
本文介绍了循环和排序电子邮件项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在 Outlook 中以升序模式循环一个 vba 脚本.
I need to loop in a vba script in Outlook in ascending mode.
我尝试了几种方法,但似乎总是以降序模式循环.
I tried several ways but it seems it always loop in descending mode.
是否有更快的方法来循环浏览电子邮件项目?
Is there a faster way to loop through the email items?
谢谢.代码类似于:
Public Sub CheckClient()
Dim objNS As Outlook.NameSpace
Dim objFolder As Outlook.MAPIFolder
Dim items As Outlook.items
Dim strFind As String
Dim Item
Set objNS = GetNamespace("MAPI")
Set objFolder = objNS.PickFolder()
strFind = "[ReceivedTime] >= '05/15/2017' AND [ReceivedTime] < '05/16/2017'"
Set items = objFolder.items
items.Sort "[ReceivedTime]", True
Set items = objFolder.items.Restrict(strFind)
For Each Item In objFolder.items
If TypeName(Item) = "MailItem" Then
If Item.Sender = "Client1" Then
DBInsert (Item)
End if
Next
End Sub
推荐答案
用于以升序和更快的方式循环遍历电子邮件项-
尝试使用反向循环,同时使用过滤器 ( strFind
) 限制 SenderName
以加快速度
Try using reverse loop, also Restrict SenderName
with your filter ( strFind
) to speed it up
例如
Option Explicit
Public Sub CheckClient()
Dim objFolder As Outlook.MAPIFolder
Dim Items As Outlook.Items
Dim strFind As String
Dim Recived As Long
Dim i As Long
Set objFolder = Application.Session.PickFolder
Set Items = objFolder.Items
Items.Sort "[ReceivedTime]"
strFind = "@SQL=" & Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " >= '05/15/2017' AND " & _
Chr(34) & "urn:schemas:httpmail:datereceived" & _
Chr(34) & " < '05/16/2017' AND " & _
Chr(34) & "urn:schemas:httpmail:fromname" & _
Chr(34) & "Like '%Client1%'"
Set Items = objFolder.Items.Restrict(strFind)
For i = Items.Count To 1 Step -1
DoEvents
Debug.Print Items(i).SenderName 'Immediate Window
Debug.Print Items(i).ReceivedTime 'Immediate Window
Next
Set objFolder = Nothing
Set Items = Nothing
End Sub
确保使用正确的名称更新%Client1%
这篇关于循环和排序电子邮件项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文