You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过VBA提取MS Project中按周统计的分配项剩余工时

问题结论

你提到的pjAssignmentTimescaledRemainingWork枚举值本身不存在,微软官方定义的pjAssignmentTimescaledData枚举列表中没有针对分配维度剩余工时的直接枚举项。

实现思路修正

剩余工时的计算逻辑为同一时间周期内的总分配工时减去实际完成工时,你可以通过以下步骤计算得到按周统计的剩余工时:

  • 先用ass.TimeScaleData(tsk.Start, tsk.Finish, pjAssignmentTimescaledWork, pjTimescaleWeeks)获取对应周期的总计划分配工时
  • 再用你现有代码获取同周期的实际工时
  • 按时间周期一一对应做差,得到的就是该周的剩余工时
参考代码示例
Dim tsTotalWork As TimeScaleValues, tsActualWork As TimeScaleValues
Dim i As Integer, remainingWork As Double

' 获取总计划工时和实际工时的时间分段数据
Set tsTotalWork = ass.TimeScaleData(tsk.Start, tsk.Finish, pjAssignmentTimescaledWork, pjTimescaleWeeks)
Set tsActualWork = ass.TimeScaleData(tsk.Start, tsk.Finish, pjAssignmentTimescaledActualWork, pjTimescaleWeeks)

' 遍历计算每周剩余工时,默认单位为分钟,除以60可转成小时
For i = 1 To tsTotalWork.Count
    remainingWork = (tsTotalWork(i).Value / 60) - (tsActualWork(i).Value / 60)
    Debug.Print "第" & i & "周剩余工时:" & remainingWork & "小时"
Next i

内容的提问来源于stack exchange,提问作者vba-67678

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:04