MS Project:循环过滤任务

MS Project: Loop through filtered tasks

从 MS 项目中,我想将满足过滤器条件的任务名称复制到 excel sheet。假设过滤器 dumb tasks。 我正在尝试一些东西,但没有用:

Dim b As Task

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

难道你只需要调整一下线就可以了

Dim b As Task

Dim b As Filter

根据docsTaskFilters returns集合Filters

我希望这能解决问题。如果您当前的问题需要更多帮助,请提出另一个问题或编辑您当前的问题以阐明您需要帮助的地方。

如果您使用自定义字段 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

要仅循环遍历应用过滤器后可见的任务,select 所有任务并循环遍历可见任务的集合。

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:虽然没有必要,但用户通常喜欢在宏的末尾恢复活动 selection,因此 CurrentTaskUID 行。

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