MS项目变更任务';通过VBA添加新值时,s工作值
使用MS Project 2007时VBA出现问题。我有一个任务MS项目变更任务';通过VBA添加新值时,s工作值,vba,ms-project,Vba,Ms Project,使用MS Project 2007时VBA出现问题。我有一个任务Task,有两个任务,包括资源Foo(2天工作)和Bar(5天工作)任务设置为固定工时。现在,当手动向任务添加或从任务中删除工作分配时,所有工作都按预期进行,没有发生任何意外。使用VBA时,如下图所示,其他工作分配的工时值会发生变化 ' Adding an Assignment with the "Baz" Resource and 10d of work Sub AddAssignment() Dim tskTask As
Task
,有两个任务,包括资源Foo
(2天工作)和Bar
(5天工作)<代码>任务设置为固定工时。现在,当手动向任务添加或从任务中删除工作分配时,所有工作都按预期进行,没有发生任何意外。使用VBA时,如下图所示,其他工作分配的工时值会发生变化
' Adding an Assignment with the "Baz" Resource and 10d of work
Sub AddAssignment()
Dim tskTask As Task
Dim rsResource As Resource
Dim asAssignment As Assignment
Set tskTask = ActiveProject.Tasks(1)
Set rsResource = ActiveProject.Resources("Baz")
Set asAssignment = tskTask.Assignments.Add(tskTask.ID, rsResource.ID)
asAssignment.Work = "10d"
End Sub
在执行脚本之前:
Task:
Foo 16h
Bar 40h
Task:
Foo 9,33h
Bar 23,33h
Baz 80h
执行脚本后:
Task:
Foo 16h
Bar 40h
Task:
Foo 9,33h
Bar 23,33h
Baz 80h
那么,实际的问题是,为了保持其他任务的工时值,我必须做什么不同的事情?因为任务被设置为固定工时,所以当您添加资源分配时,它将保持任务的总工时不变。当您想要添加资源并增加任务的总工作量时,就会出现问题 在这种情况下,总工时是56小时。添加作业后,总工时仍为56小时。功的比例相同:40%、100%和100%,分别为9.33小时、23.33小时和23.33小时。然后,上一次作业的工时增加到80小时,任务的总工时现在为112.67小时 它在用户界面中按照您的意愿工作的原因是,您不仅要添加新任务并设置其工作,而且从MS Project的角度来看,您还要(重新)设置现有资源上的工作 在VBA中执行此操作的解决方案是精确模拟UI中发生的情况,包括重置现有资源的工作:
Sub AddAssignment()
Dim tskTask As Task
Dim rsResource As Resource
Dim asAssignment As Assignment
Dim colAssn As Collection
Dim iIdx As Integer
Set tskTask = ActiveProject.Tasks(7)
Set rsResource = ActiveProject.Resources("Baz")
Set colAssn = New Collection
For Each asAssignment In tskTask.Assignments
colAssn.Add asAssignment.Work
Next asAssignment
Set asAssignment = tskTask.Assignments.Add(tskTask.ID, rsResource.ID)
colAssn.Add 10 * 8 * 60 ' work is stored as minutes
For iIdx = 1 To colAssn.Count
tskTask.Assignments(iIdx).Work = colAssn(iIdx)
Next iIdx
End Sub
实际上,更简单的问题是努力驱动的。将任务设置为固定的单位和工作量,原始代码就可以正常工作。啊,我明白了!你试过了,但遇到了一个小问题。添加新作业时,
tskTask.Assignments
的索引可能会更改,因此实际作业的索引位置与以前不同。我没有进一步调查,但现在正在使用字典,它肯定会将正确的资源映射到正确的工作量,并设置它。回答得很好,帮助很大,谢谢瑞秋!我想知道资源的顺序。。。感谢分享您的解决方案。