【问题标题】:Reading and writing MS Project TimeScaleData for Resources, and Assignments为资源和作业读写 MS Project TimeScaleData
【发布时间】:2020-07-01 07:25:15
【问题描述】:

我将预计成本提取到 Excel 报告和外部数据库中。每月预测的一部分是更新项目间接费用。所以我需要准确地提取每月成本并将每月成本写入间接费用任务。

我无法理解您为什么要读取和写入作业而不是直接写入成本资源?

按资源读取月成本(简化):

Dim tsvs as TimeScaleValues
Dim res as Resource

Do Until budgetDate > ActiveProject.ProjectFinish
    For Each res In ActiveProject.Resources
        Set tsvs = res.TimeScaleData(StartDate:=budgetDate, EndDate:=budgetDate, Type:=pjResourceTimescaledCost, TimeScaleUnit:=pjTimescaleMonths, Count:=1)
        myMonthCost = Val(tsvs(1).Value)
    Next res
    budgetDate = DateAdd("m", budgetDate, 1)
Loop

tsvs(单月)中只有一个 TimeScaleValue,所以我相信我只需引用 tsvs(1).Value 而不必通过集合递增。

通过作业读取月成本:

Do Until budgetDate > laborFinishDate
    For Each res In ActiveProject.Resources
        Set asgts = res.Assignments
        For Each asgt In asgts
            Set tsvs = asgt.TimeScaleData(StartDate:=budgetDate, EndDate:=budgetDate, Type:=pjAssignmentTimescaledCost, TimeScaleUnit:=pjTimescaleMonths, Count:=1)
            myMonthCost = myMonthCost + Val(tsvs(1).Value)
        Next asgt
    Next res
    budgetDate = DateAdd("m", budgetDate, 1)
Loop

最后将每月的间接费用写入间接费用任务:

myOverhead = myMonthCost * myRate

Set tsk = ActiveProject.Tasks("Overhead")
Set tsvs = tsk.Assignments(1).TimeScaleData(StartDate:=budgetDate, EndDate:=budgetDate, Type:=pjAssignmentTimescaledCost, TimeScaleUnit:=pjTimescaleMonths)

tsvs(1).Value = myOverhead

这种方法对我有用,但我很沮丧,我无法让它直接写入资源成本。我真的不明白为什么我必须读取或写入作业(任务或资源)而不是直接写入资源本身。谁能解释为什么要使用作业来读写成本,或者是否有更好的方法直接使用资源?

感谢您的宝贵时间。

【问题讨论】:

    标签: vba ms-project


    【解决方案1】:

    答案是 assignments 表包含将资源与任务相关联的 TimeScaleData(反之亦然),因此您必须写入与资源(或任务)相关的分配。 Resource TimeScaleData 确实是资源的相关Assignment TimeScaleData。

    【讨论】:

      猜你喜欢
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2014-05-14
      • 2014-11-11
      • 2014-11-08
      • 1970-01-01
      • 2015-05-07
      相关资源
      最近更新 更多