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集合Filter
s
我希望这能解决问题。如果您当前的问题需要更多帮助,请提出另一个问题或编辑您当前的问题以阐明您需要帮助的地方。
如果您使用自定义字段 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:由于过滤器可能很复杂,因此最好使用实际的过滤器而不是尝试在代码中复制它。
从 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集合Filter
s
我希望这能解决问题。如果您当前的问题需要更多帮助,请提出另一个问题或编辑您当前的问题以阐明您需要帮助的地方。
如果您使用自定义字段 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:由于过滤器可能很复杂,因此最好使用实际的过滤器而不是尝试在代码中复制它。