MS Project:循环过滤任务

时间:2017-11-13 14:44:48

标签: vba ms-project microsoft-project-vba

从MS-Project我想复制到excel表格中的任务名称符合过滤条件。我们说过滤器dumb tasks。 我正在尝试一些东西,但它不起作用:

Dim b As Task

For Each b In ActiveProject.TaskFilters("dumb tasks")
    'code to copy to excel
Next

3 个答案:

答案 0 :(得分:2)

如果您使用自定义字段Flag3作为过滤器,则可以循环执行任务,并检查每个任务是否为b.Flag3 = True,然后将此任务复制到Excel。

Dim b As Task

For Each b In ActiveProject.Tasks
    If b.Flag3 = True Then
        ' here do your copy>>paste to Excel

    End If
Next

答案 1 :(得分:1)

要仅循环应用过滤器后可见的任务,请选择所有任务并循环显示可见任务的集合。

Sub LoopThroughFilteredTasks()

    Dim CurrentTaskUID As Long
    CurrentTaskUID = ActiveCell.Task.UniqueID

    FilterApply "dumb tasks"
    SelectAll
    Dim FilteredTasks As Tasks
    Set FilteredTasks = ActiveSelection.Tasks
    Dim tsk As Task
    For Each tsk In FilteredTasks
        ' do something
    Next tsk
    FilterApply "&All Tasks"

    Application.Find "Unique ID", "equals", CurrentTaskUID

End Sub

注1:虽然没有必要,但用户通常会欣赏在宏结束时恢复的活动选择,因此CurrentTaskUID行。

注意2:由于过滤器可能很复杂,因此最好使用实际的过滤器,而不是尝试在代码中复制它。

答案 2 :(得分:-1)

可能只需要调整行

Dim b As Task

Dim b As Filter

根据docs TaskFilters返回Filter s

的集合

我希望这能解决这个问题。如果您需要更多有关当前问题的帮助,请提出其他问题或编辑当前问题以澄清您需要帮助的位置。