【问题标题】:Created Custom fields in Gantt view and want to show up in Resource Usage view在甘特视图中创建自定义字段并希望显示在资源使用视图中
【发布时间】:2014-10-14 15:40:54
【问题描述】:

我正在使用 MS Project 列出我部门正在进行的所有项目和工作。我在甘特图视图中为每个任务和子任务创建了自定义字段(Text 1(proj name)Text 2 (proj number))。如何创建一个宏以使这些与我在甘特图视图中输入的所有数据一起显示在我的资源使用视图中?我想查看我所有资源的列表、分配给它们的任务并查看每个任务的自定义字段。谢谢。

【问题讨论】:

  • 你试过什么?请显示一些源代码并具体说明您的问题是什么
  • 这是我尝试过的,但我认为我做的不对。
  • Sub test() '用于跟踪当前任务和资源的变量 Dim T As Task Dim R As Resource Dim A As Assignment Set ts = ActiveProject.Tasks '循环遍历项目中的所有任务 For Each T In ActiveProject.Tasks '检查任务是否为空 If Not T Is Nothing Then '在 Tasks.Assignment 中为每个 R 循环遍历任务的每个资源 If Assignments = T.Name Then R.Text1 = T.Text1 End If Next R End If Next T End Sub

标签: vba custom-fields ms-project


【解决方案1】:

有两组针对分配的自定义字段。 Resource.assignments 和 task.assignments。

如果您通过 VBA 中的任务集合或客户端中的任务使用视图引用分配,您将更新 task.assignment 字段。

如果您通过资源集合或资源使用视图访问分配,那么它就是您要更新的 resource.assignments 字段。

如果您希望它们都对齐,您需要一个例程,逐步完成所有任务,然后为每个任务分配每个任务,然后通过资源集合找到相同的任务,并设置 task.assignments.text21 = resources.assignments .text21(例如)。

我认为这是在 2007 年推出的 - 不是微软的错误,只是一个新功能。

【讨论】:

  • 所以你说我所拥有的很接近,但我只需要更正每个文本字段的映射?我的 VBA 技能非常缺乏。对不起。
  • 查看您的代码示例,您实际上并没有使用 assignment.text1 字段 - 您正在尝试将 task.text1 字段映射到 resource.text1 字段,这不会真正起作用分配允许任务和资源之间的多对多关系(即一个任务可以有多个资源,一个资源可以分配给多个任务)。
  • 您的代码所做的就是将 resource.text1 字段设置为分配给它们的最后一个任务的 task.text1 字段。如果最后一个任务没有 text1 值,那么资源也没有。您可能希望将这些值连接在一起,以便 resource.text1 字段将成为资源分配到的任务的所有 text1 值的列表。
  • 例如R.Text1 = R.Text1 & T.Text1
  • 所以你说这应该有效。 'Sub test() Dim T As Task Dim R As Resource Dim A As Assignment Set ts = ActiveProject.Tasks For Each T In ActiveProject.Tasks If Not T is nothing then For Each R in Tasks.Assignment If Assignments = T.Name Then R.Text1 = R.Text1 & T.Text1 End If Next R End If Next T End Sub '
【解决方案2】:

您在 Resource Usage 视图中看到的“任务”数据和您在 Task Usage 视图中看到的“资源”数据实际上是 Assignment 数据。

更新

感谢@Andrew 对分配的两组自定义文本字段的说明,我更新了代码,以便任务的 Text1 字段在任务使用情况视图和资源使用情况视图中都可见。

这是一个用任务的 Text1 字段更新 Assignment Text1 字段的宏:

Sub UpdateAssignmentInfo()
    Dim tsk As Task
    Dim asn As Assignment
    For Each tsk In ActiveProject.Tasks
        For Each asn In tsk.Assignments
            asn.Text1 = tsk.Text1
        Next asn
    Next tsk
    Dim res As Resource
    For Each res In ActiveProject.Resources
        For Each asn In res.Assignments
            asn.Text1 = asn.Task.Text1
        Next asn
    Next res
End Sub

【讨论】:

  • 谢谢。还是有问题。我运行了那个宏,但仍然没有得到任何填充资源使用视图中 Text1 字段的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-17
  • 2017-07-07
  • 2020-12-19
相关资源
最近更新 更多