我正在尝试读取/获取每天或在 vba 上的两个日期之间的作业所需的工作时间。
具体说明我正在尝试做的事情: 我创建了一个从 2024 年 3 月 11 日开始的任务,需要 16 小时的工作,并分配给名为 DD 的资源
我想了解该作业在特定日期或日期范围内消耗了 DD 工作时间的多少工作时间。
(<=>我想在vba中读取/获取下面所示的资源使用表上绿色的工作时间)
我尝试使用 TimeScaleData 方法提取该数据,但似乎您只能输入数据,而不能从中读取数据。
我现在只需要正确的方法/命令来提取该数据。
我预先感谢您提供的任何帮助。
For Each tsk In ActiveProject.Tasks
Dim asn As Assignment
For Each asn In tsk.Assignments
If asn.Resource.Name = "DD" Then
'Dim tsv As TimeScaleValues
'Set tsv = asn.TimeScaleData(StartDate:=#3/1/2024#, EndDate:=#3/7/2024# _
' , Type:=pjAssignmentTimescaledActualWork, TimeScaleUnit:=pjTimescaleDays)
testasn = asn.TimeScaleData(StartDate:=#3/1/2024#, EndDate:=#3/7/2024#)
'test1 = tsv(1).Value
'test2 = tsv(2).Value
End If
Next asn
Next tsk
找到了。
下面的宏将在变量 TestFeedback 中返回带有以下内容的文本:
只需在其上放置一个断点即可检查它在循环过程中如何演变。
可以在这里找到一些非常有用的信息: 时间阶段性数据MS项目
那里有一些关于如何读取每个资源的小时数的信息。
注意:链接页面提到uniqueID应该在表达式的XXX中输入 设置 tsvs = ActiveProject.Tasks(XXXX).TimeScaleData([...])
但是,当我测试宏时,这不起作用。 它仅适用于任务 ID。
Sub TimePhasedDataTest()
Dim tsv As TimeScaleValue
Dim tsvs As TimeScaleValues
TestStart = #3/9/2024#
TestFinish = #3/19/2024#
Set t = ActiveCell.Task
'Timephased for Task with ID 6
Set tsvs = ActiveProject.Tasks(6).TimeScaleData( _
StartDate:=TestStart, _
EndDate:=TestFinish, _
Type:=pjTaskTimescaledWork, _
TimeScaleUnit:=pjTimescaleDays, Count:=1)
For Each tsv In tsvs
'Debug.Print "Start: " & Format(tsv.StartDate, _
'"Long Date"), "Work: " & Val(tsv.Value) / 60 & "h"
TestFeedback = tsv.Parent.Name & _
" S: " & tsv.StartDate & " " & _
"F: " & tsv.EndDate & " " & _
"W: " & Val(tsv.Value) / 60 & "h"
Next tsv
End Sub