为资源和作业读写 MS Project TimeScaleData

Reading and writing MS Project TimeScaleData for Resources, and Assignments

我正在将预计成本纳入 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

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

感谢您的宝贵时间。

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