从MS-Project我想复制到excel表格中的任务名称符合过滤条件。我们说过滤器dumb tasks
。
我正在尝试一些东西,但它不起作用:
Dim b As Task
For Each b In ActiveProject.TaskFilters("dumb tasks")
'code to copy to excel
Next
答案 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
我希望这能解决这个问题。如果您需要更多有关当前问题的帮助,请提出其他问题或编辑当前问题以澄清您需要帮助的位置。