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

如何通过MS Project VBA获取指定日期/日期范围的任务分配工时?

在VBA中读取Project资源分配的指定日期范围工时

问题场景

创建了一个2024年3月11日开始、总工时16小时的任务,分配给名为DD的资源,需要读取该分配在特定日期或日期范围内的工时(即资源使用表中绿色标注的计划工时)。曾尝试使用TimeScaleData方法但误以为仅能写入,需获取正确的读取方法。

正确实现思路

TimeScaleData方法本身支持读取时间刻度数据,核心是正确配置参数并遍历返回的TimeScaleValues集合:

  • 必须使用Set关键字将返回的TimeScaleValues对象赋值给变量(因为是对象类型)
  • 指定正确的Type参数:读取计划工时用pjAssignmentTimescaledWork,读取实际工时用pjAssignmentTimescaledActualWork
  • 设置TimeScaleUnit为pjTimescaleDays以按天粒度获取数据
  • 遍历TimeScaleValues集合,每个元素的StartDate对应日期,Value对应该日期的工时(单位为分钟)

修正后的完整代码

Sub GetDDResourceWorkHours()
    Dim tsk As Task
    Dim asn As Assignment
    Dim tsv As TimeScaleValues
    Dim tsValue As TimeScaleValue
    
    ' 遍历所有任务
    For Each tsk In ActiveProject.Tasks
        ' 跳过空任务(比如摘要任务下方的空行)
        If Not tsk Is Nothing Then
            ' 遍历任务的所有资源分配
            For Each asn In tsk.Assignments
                ' 筛选资源名为DD的分配
                If asn.Resource.Name = "DD" Then
                    ' 获取2024年3月10日至3月20日的每日计划工时数据
                    Set tsv = asn.TimeScaleData( _
                        StartDate:=#3/10/2024#, _
                        EndDate:=#3/20/2024#, _
                        Type:=pjAssignmentTimescaledWork, _
                        TimeScaleUnit:=pjTimescaleDays _
                    )
                    
                    ' 遍历时间刻度数据,输出日期和工时(转换为小时)
                    For Each tsValue In tsv
                        ' 仅输出有工时的日期
                        If tsValue.Value > 0 Then
                            Debug.Print "日期: " & tsValue.StartDate & ",工时: " & tsValue.Value / 60 & "小时"
                        End If
                    Next tsValue
                End If
            Next asn
        End If
    Next tsk
End Sub

关键注意事项

  • 日期范围需覆盖任务实际执行时间:原代码中设置的3/1-3/7早于任务开始日期3/11,会返回空数据,需调整到包含任务周期的范围
  • 工时单位转换:Value属性返回的是分钟数,除以60可转换为小时
  • 参数选择:如果需要读取实际已完成的工时,将Type改为pjAssignmentTimescaledActualWork

内容的提问来源于stack exchange,提问作者Damien Dambre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 17:40:16