如何以编程方式编辑摘要任务基线预算成本的时间标度值

How to edit timescaled values for summary task baseline budget cost programmatically

我正在尝试通过 C# 中的项目插件为特定资源分配和特定日期编辑基准预算成本值:

Project project = Globals.ThisAddIn.Application.ActiveProject;
var projectTask = project.ProjectSummaryTask;
foreach (Assignment item in projectTask.Assignments)
{
    var data = item.TimeScaleData(start, end,
                    PjAssignmentTimescaledData.pjAssignmentTimescaledBaseline1BudgetCost,
                    PjTimescaleUnit.pjTimescaleMonths, 1);
    foreach (TimeScaleValue dataItem in data)
    {
       dataItem.Value = 1000;
    }
}

它工作正常,但每个月的总和计算不正确:

当我尝试使用与我使用的相同的方式更改摘要任务的时间标度数据时,出现 COM 错误:参数值无效。

var data = projectTask.TimeScaleData(start, end,
            PjTaskTimescaledData.pjTaskTimescaledBaseline1BudgetCost,
            PjTimescaleUnit.pjTimescaleMonths, 1);
foreach (TimeScaleValue dataItem in data)
{
    dataItem.Value = 1000;
}

异常:参数值无效 在 Microsoft.Office.Interop.MSProject.Task.TimeScaleData(对象开始日期、对象结束日期、PjTaskTimescaledData 类型、PjTimescaleUnit TimeScaleUnit、Int32 计数)中。

我做错了什么?

谢谢。

晚了,我知道但是...当我设置 ActualWork 时,我不得不在末尾添加 "h",基本上将其设置为字符串而不是小数。它有点难以阅读,但看起来你的附加图片在数字后面有一个 "p"。请尝试 dataItem.Value = "1000p";

这可能等同于您的 foreach 循环,但我还发现它的索引从 1 开始。我不得不使用 data[ 1 ].Value = decHours.ToString() + "h";