如何提取MS Project计划中筛选器的字段与条件?
MS Project筛选器信息提取及自定义/预置筛选器区分方案
一、编程提取筛选器条件及字段的实现方法
MS Project的对象模型中,Filter对象提供了Criteria属性可直接获取筛选条件字符串,结合Filter的其他属性可完整提取所需信息。以下是VBA代码示例:
Sub ExtractFilterDetails() Dim proj As Project Dim fltr As Filter Dim outputText As String Set proj = ActiveProject outputText = "筛选器名称,是否自定义,筛选条件" & vbCrLf For Each fltr In proj.Filters ' 处理空筛选条件 Dim criteria As String criteria = IIf(IsNull(fltr.Criteria), "无", fltr.Criteria) ' 拼接筛选器信息 outputText = outputText & fltr.Name & "," & fltr.UserDefined & "," & criteria & vbCrLf Next fltr ' 导出为CSV文件(可修改路径) Open "C:\Temp\FilterDetails.csv" For Output As #1 Print #1, outputText Close #1 MsgBox "筛选器信息已导出到C:\Temp\FilterDetails.csv" End Sub
代码说明
fltr.UserDefined:返回布尔值,直接判断该筛选器是否为用户自定义fltr.Criteria:返回筛选条件的原始字符串,格式与MS Project中筛选器设置的条件一致,可从中解析出涉及的字段和逻辑条件- 注意:若筛选器基于自定义字段,
Criteria中会显示自定义字段的内部名称,可结合CustomFields对象关联对应显示名称
二、手动区分自定义与预置筛选器的方法
- 通过筛选器管理器判断:打开MS Project,点击【文件】>【信息】>【管理器】,切换到【筛选器】选项卡。左侧为当前项目的筛选器,右侧为全局模板的预置筛选器;仅存在于左侧的为自定义筛选器,若左侧是右侧预置筛选器的修改副本,也属于自定义。
- 通过编辑权限判断:在【视图】选项卡的【筛选器】下拉菜单中,右键点击筛选器名称。预置筛选器无法直接选择【编辑】,需先【复制】才能修改;自定义筛选器可直接选择【编辑】。
- 通过名称特征判断:预置筛选器为系统默认命名,如“所有任务”“关键任务”“已完成任务”等;自定义筛选器通常带有用户自定义名称(如“部门A专属任务”“Q3交付项”),若名称无明显特征,可结合前两种方法确认。
内容的提问来源于stack exchange,提问作者Miles
相关产品推荐
相关产品推荐

