读取和编写用于资源和分配的MS Project TimeScaleData

时间:2015-06-02 20:58:40

标签: vba ms-project microsoft-project-vba

我将预计成本提取到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

这种方法适合我,但我很沮丧我无法让它直接写资源成本。我真的不明白为什么我必须读取或写入任务(任务或资源)而不是直接读取资源本身。任何人都可以解释为什么人们应该使用赋值来读取和写入成本,或者是否有更好的方法直接使用资源?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

答案是赋值表包含将资源与任务相关联的TimeScaleData(反之亦然),因此您必须写入与资源(或任务)相关的赋值。资源TimeScaleData实际上是资源的Assignment TimeScaleData。