我目前正在使用VBA从Excel工作表中打开MS-Project中的一个项目。我还添加了任务,日期,持续时间和一些更多的数据。
我的问题是,当我添加一个新任务时,该任务的默认开始时间不是项目中定义的时间(上午7:00),而是00:00。下面是我使用的代码:
'Collect data
strValue = Worksheets("Display").Range("B" & i)
strStartDate = Worksheets("Display").Range("G" & i)
strEndDate = Worksheets("Display").Range("G" & i)
Strresource = Worksheets("Display").Range("C" & i)
DurTim = CDec(Worksheets("Display").Range("E" & i))
ActDurTim = CDec(Worksheets("Display").Range("F" & i))
'Define project defaults
newproj.DefaultStartTime = "7:00"
newproj.DefaultFinishTime = "16:00"
newproj.HoursPerDay = "7"
'Enter data to task
newproj.Tasks.Add (strValue)
'Check for milestone
If Worksheets("Display").Range("H" & i) = "Y" Then
newproj.Tasks(i - 6).Milestone = False
End If
newproj.Tasks(i - 6).Start = strStartDate
newproj.Tasks(i - 6).Duration = DurTim & " hours"
newproj.Tasks(i - 6).ActualDuration = ActDurTim & "hours"
If i <> 7 Then
newproj.Tasks(i - 6).Predecessors = newproj.Tasks(i - 6 - 1)
End If
If Not ExistsInCollection(newproj.Resources, Strresource) Then _
newproj.Resources.Add.Name = Strresource
newproj.Tasks(i - 6).ResourceNames = Strresource我试图在任务的Ms-Project对象和项目本身中寻找解决方案,但没有成功。任何帮助都会感激不尽。
发布于 2015-01-27 07:40:49
当您通过代码设置任务的Start属性时,您实际上是在设置约束日期和约束类型,以便驱动计算的开始字段。并且所提供的日期具有显式(例如1/26/2015 3:25 PM)或隐式(例如1/26/2015 12:00 AM)的时间部分。
另一方面,如果您在用户界面中键入开始日期,并且没有提供时间组件,则会将默认开始时间添加到该日期以创建约束日期。
您在任务的“开始”域中实际看到的内容取决于Microsoft Project用来计算日期的以下因素:约束、前置任务/后续任务和日历(项目、任务和资源)。
从您报告的情况来看,您的项目日历似乎设置为7d24小时或类似的日历,其工作时间从午夜开始。因此,当您通过代码设置开始日期时,将添加一个带有午夜开始时间的限制日期,并且由于项目日历将该日期作为工作时间,因此任务在午夜开始。
如果要模拟设置开始日期的用户界面方法,请使用SetField方法:
newproj.Tasks(i - 6).SetField pjTaskStart, strStartDatehttps://stackoverflow.com/questions/28068425
复制相似问题