2016-03-28 122 views
0

我正在努力自动执行重复性任务。搜索次要Outlook帐户收件箱

搜索主题包含以下内容的项目的电子邮件收件箱(不是主要Outlook帐户):“Acting/Additional”。

Sub SrchRF4AAABonuses() 
Dim myOlApp As New Outlook.Application 
Dim objNamespace As Outlook.NameSpace 
Dim objFolder As Outlook.MAPIFolder 
Dim filteredItems As Outlook.Items 
Dim itm As Object 
Dim Found As Boolean 
Dim strFilter As String 

Set objNamespace = myOlApp.GetNamespace("MAPI") 
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox) 
strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%Acting/Additional%'" 

Set filteredItems = objFolder.Items.Restrict(strFilter) 

If filteredItems.Count = 0 Then 
Debug.Print "No emails found" 
Found = False 
Else 
Found = True 
' this loop is optional, it displays the list of emails by subject. 
For Each itm In filteredItems 
Debug.Print itm.Subject 
Next 
End If ... 

....

上面的代码搜索我的默认电子邮件(例如,[email protected]),但是,我有一个辅助电子邮件称为零售金融,(RFIN @ example.com),我想搜索那个电子邮件地址收件箱。我如何修改我的代码来完成此操作?

我是Outlook VBA的新手,对不起,如果这是基本的。

回答

1

如果这是委托Exchange邮箱,请使用Namespace.GetSharedDefaultFolder打开它。如果它只是您当前配置文件中的另一个商店,请在Namespace.Stores集合中找到该商店,并致电Store.GetDefaultFolder

+0

如何实现这些?当我尝试: 昏暗objNamespace作为Outlook.NameSpace 设置objNamespace = myOlApp.NameSpace.GetSharedDefaultFolder 我得到: 运行时错误“438”对象不支持此属性或方法。 –

+1

您需要myOlApp.GetNameSpace(“MAPI”)。GetSharedDefaultFolder。传递由Namespace.CreateRecipient返回的收件人对象。 –

0

此代码完成了任务:

Sub Search_Inbox() 

Dim objNamespace As Outlook.NameSpace 
Dim olShareName As Outlook.Recipient 
Dim olShareInbox As Outlook.Folder 
Dim objFolder As Outlook.MAPIFolder 
Dim filteredItems As Outlook.Items 
Dim itm As Object 
Dim Found As Boolean 
Dim strFilter As String 


Set objNamespace = Application.GetNamespace("MAPI") 
Set olShareName = objNamespace.CreateRecipient("[email protected]") 'address 

Set objFolder = objNamespace.GetSharedDefaultFolder(olShareName, olFolderInbox) 


strFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:subject" & Chr(34) & " like '%Acting/Additional%'" 

Set filteredItems = objFolder.Items.Restrict(strFilter) 

If filteredItems.Count = 0 Then 
    Debug.Print "No emails found" 
    Found = False