簡體   English   中英

如何從Excel VBA中的其他郵件中過濾今天收到的Outlook郵件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM