【问题标题】:VBA - Add task to MS project from ExcelVBA - 从 Excel 将任务添加到 MS 项目
【发布时间】:2015-03-20 01:02:55
【问题描述】:

我目前正在使用 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 对象和项目本身中寻找解决方案,但没有运气。 任何帮助将不胜感激。

【问题讨论】:

    标签: vba excel ms-project


    【解决方案1】:

    当您通过代码设置任务的开始属性时,您实际上是在设置约束日期和约束类型以驱动计算的开始字段。并且提供的日期具有时间部分,可以是明确的(例如 2015 年 1 月 26 日下午 3:25)或隐含的(例如 2015 年 1 月 26 日上午 12:00)。

    另一方面,如果您在用户界面中输入开始日期并且不提供时间组件,则默认开始时间会添加到日期以创建约束日期。

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

    根据您的报告,您的项目日历似乎设置为 7d24h 或类似的日历,工作时间从午夜开始。因此,当您通过代码设置开始日期时,会添加一个带有午夜开始时间的约束日期,并且由于项目日历将其作为工作时间,因此任务从午夜开始。

    如果您想模拟设置开始日期的用户界面方法,请使用 SetField 方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-21
      • 2015-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多