VBA – 从Excel中添加任务到MS项目

我目前正在使用VBA从Excel工作表中打开一个MS-Project项目。 我也添加任务,date,持续时间和一些更多的数据。

我的问题是,当我添加一个新的任务,该任务的默认开始时间不是在项目(上午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对象和项目本身的解决scheme,但没有运气。 任何帮助将不胜感激。

当您通过代码设置任务的“开始”属性时,您实际上正在设置“约束date”和“约束types”以驱动计算的“开始”字段。 并且提供的date有明确的时间分量(例如1/26/2015 3:25 PM)或含蓄地(例如1/26/2015 12:00 AM)。

另一方面,如果您在用户界面中键入开始date,而您没有提供时间组件,则将默认开始时间添加到date以创build约束date。

实际在任务的“开始”字段中看到的内容取决于Microsoft Project用于计算date的这些因素:约束,前置/后继任务和日历(项目,任务和资源)。

根据您所报告的情况,您的项目日历设置为7天24小时或类似日历,从午夜开始工作。 因此,当您通过代码设置开始date时,约会date将添加一个午夜开始时间,由于项目日历具有作为工作时间的任务,因此该任务将在午夜开始。

如果要模拟设置开始date的用户界面方法,请使用SetField方法:

 newproj.Tasks(i - 6).SetField pjTaskStart, strStartDate