在 MS Project 中命名资源过滤器

问题描述 投票:0回答:2

我正在尝试循环浏览每个资源名称,并打印出使用该资源的整个项目的单页概述(这样我的人员就有了他们需要做什么的个性化任务列表)。

我可以提取分配给项目的各种资源的值,并使用以下方式控制视图:

ResourceName = ActiveProject.Resources(i).Name
ViewApplyEx Name:="&Gantt Chart", ApplyTo:=0

我可以使用以下方式访问过滤器:

FilterApply Name:="Using Resource..."

我无法设置我想要的资源值。
我尝试设置 Value1:= "SoAndSo",但是我设置值的弹出窗口没有关闭。

我在尝试打印窗口时遇到类似的问题。
我可以进入打印窗口,但无法按下注册按钮以便打印机获得作业。

vba ms-project
2个回答
0
投票

这是我关于外部循环(资源)和内部循环(分配)的评论的实现,它有效地创建了资源待办事项列表。包括您需要的任何资源/分配字段。我建议您在运行宏之前将时间刻度数据一直拉到右侧,这样它就不会出现在打印输出中。准备打印时,删除打印语句中的“预览”选项。

Dim r As Resource
Dim a As Assignment
For Each r In ActiveProject.Resources
    r.Flag1 = True
    For Each a In r.Assignments
        a.Flag1 = True
    Next a
    FilterEdit Name:="ResAss", taskfilter:=False, create:=True, overwriteexisting:=True, FieldName:="Flag1", _
        test:="equals", Value:="yes", ShowInMenu:=False, showsummarytasks:=False
    FilterApply Name:="ResAss"
    r.Flag1 = False
    For Each a In r.Assignments
        a.Flag1 = False
    Next a
    FilePrint preview:=True
    FilterClear
Next r
        
End Sub

0
投票

该宏循环遍历资源,设置过滤器,然后打印。使用FilterEdit可以轻松创建新的临时过滤器,然后使用OrganizerDeleteItem将其删除。另外,FilePrint方法至少需要一个参数,否则,如果没有参数,则会出现对话框。

Sub PrintTasksForEachResource()

    Dim r As Resource
    For Each r In ActiveProject.Resources
        FilterEdit Name:="tempRes", TaskFilter:=True, Create:=True _
            , OverwriteExisting:=True, FieldName:="Resource Names" _
            , Test:="contains", Value:=r.Name _
            , ShowSummaryTasks:=True
        FilterApply "tempRes"
        FilePrint Color:=True
    Next r

    FilterClear
    OrganizerDeleteItem pjFilters, ActiveProject.Name, "tempres"
    
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.