[英]How to filter Outlook mail items received by today from other mail items in Excel VBA
我是Excel宏(VBA)的新手。 我們有一個Excel宏應用程序,在該應用程序中,我試圖從其他郵件中過濾今天收到的Outlook郵件。 我嘗試了限制方法。 這是現在的代碼
Set Fldr1 = olNs.GetDefaultFolder(olFolderInbox).Folders.Item("Folder name")
olMiArr=Fldr1.Items.Restrict("DateValue[ReceivedTime]='DateValue(Now)'")
但這會在執行時引發錯誤。 任何對此的評論都受到高度贊賞。
為確保日期格式符合Microsoft Outlook的預期格式,請使用“格式”功能。 例如:
Items.Restrict("DateValue[ReceivedTime]='" & Format(DateValue(Now),"ddddd h:nn AMPM") & "'")
還請注意, Restrict方法將過濾器應用於Items集合,並返回一個新集合,其中包含來自原始的與過濾器匹配的所有項目的新集合。
首先,您的搜索條件包括字符串內的函數。
其次,永遠不要在日期/時間屬性中使用“ =
”:由於舍入錯誤,永遠不會滿足該條件,請始終使用范圍。
就你而言
olMiArr=Fldr1.Items.Restrict("[ReceivedTime] >= '" & DateValue(Now) & "' AND [ReceivedTime] < '" & DateValue(Now+1) & "'")
還有另一種解決方案。 搜索Outlook項目(包括郵件項目,任務項目)時,請使用DASL語法。 它看起來更復雜,實際上並非如此。
有一個名為Outlook Spy的Outlook加載項( http://www.dimastr.com/outspy/home.htm ),可為您提供DASL字符串。 您可以選擇要搜索其字段的項目,並獲得該項目內任何字段(常規字段或定制字段)的“ DASL”公式。
下面是一個使用示例,該示例讀取搜索鍵內的變量(請注意,DASL字符串是隨機的,僅出於描述目的,您必須在自己的Outlook項目中生成它):
設置這樣的過濾項目的集合。 並在其中循環。
myFilter="@SQL=""http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/somefieldname/0x0000001F""='" & strEnterInput & "'"
Set objSourceItemsRestrict = objSourceItems.Restrict(myFilter)
For Each objSourceTask In objSourceItemsRestrict
'do something
Next
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.