2017-08-04 125 views
1

我需要在Outlook中创建自定义筛选器,以免我无需每次都手动调整筛选设置,最好使用VBA。使用VBA筛选Outlook 2010任务

以下是我的尝试。我插入了消息框行以检查正确的项目是否受到限制。在运行宏时,我得到了一些显示为“1”的消息框,表示它正在按预期工作(每个“正在进行”项目都显示消息框)。

For Each Task_List In CreateObject("Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(13).Items.Restrict("[Status]='In Progress'") 
     MsgBox Task_List.Status 
     sFilter = "[Status]=Task_List.Status" 
Next 

但是,任务文件夹中的任务不会被过滤,所有任务都会显示而不管标准如何。

我从代码中遗漏了什么?或者我完全吠叫错了树。

谢谢,并提前道歉,为简单的问题。

+0

更多Google搜索显示可以设置多个“视图”,允许您按照各种标准进行过滤 –

回答

0

一旦你手动设置不同的视图,你可以通过这种方式得到它们。

,其视图被命名为例如“进行中”

Sub TaskView_InProgress() 
    ' No error if the view does not exist 
    ' No error if not currently in Tasks folder 
    ActiveExplorer.CurrentView = "In Progress" 
End Sub 
0

这表明如何访问正在进行的任务。如果你有很多任务,尽管比视图更有帮助。

Private Sub task_Filter() 

' Folders may contain any type of item 
Dim myItem As Object 

Dim myItems As items 
Dim resItems As items 

Dim myTaskFolder As Folder 

Dim sFilter As String 
Dim msgPrompt As String 

Set myTaskFolder = Session.GetDefaultFolder(olFolderTasks) 

Set myItems = myTaskFolder.items 

sFilter = "[Status]='In Progress'" 
Set resItems = myItems.Restrict(sFilter) 

For Each myItem In resItems 
    If myItem.Class = OlTask Then 
     myItem.Display 
    End If 
Next 

End Sub