gpt4 book ai didi

VBA - 从 Excel 将任务添加到 MS 项目

转载 作者:行者123 更新时间:2023-12-04 20:43:08 25 4
gpt4 key购买 nike

我目前正在使用 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 年 1 月 26 日下午 3:25)或隐含的(例如 2015 年 1 月 26 日上午 12:00)。

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

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

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

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

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

关于VBA - 从 Excel 将任务添加到 MS 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28068425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com