如何通过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
相关产品推荐
相关产品推荐

