开始日期从 excel 到 ms 项目(VBA)

Start Date from excel to ms project (with VBA)

我正在尝试使用 VBA 将项目数据从 MS Excel 传输到 MS Project。

问题是,正如我现在所做的那样,每个任务的开始时间都设置在 12:00 AM,这让我在评估 EndDate 时遇到了问题(假设我使用每个 activity).

的开始日期和持续时间
Dim StartDate As Date

For j = 1 To 10000
    StartDate = wbAs.Worksheets(i).Cells(j, 2).Value
    prProject.Tasks(i).Start = StartDate
    i = i + 1

代码有点长,所以没有完整复制,希望大家看得懂。 基本上,我在 Excel 工作表的每一行上循环,并在 MS Project 中传输每个 activity 的开始日期,出现在第二列中。

这样做,我无法通过 StartHour,同时我想告诉 MS Project 所有活动都在 09:00 AM 开始。 这可能吗?

谢谢

为什么不在设置项目开始前将小时设置为 9:00am?这应该有所帮助:How to set only the time part of a datetime

Dim StartDate As Date

StartDate = wbAs.Worksheets(i).Cells(j, 2).Value
Dim ProjDate As DateTime = New DateTime(StartDate.Year, StartDate.Month, StartDate.Day,9,0,0,0)
prProject.Tasks(i).Start = ProjDate

快速回答

将缺少的小时部分添加到仅限日期的值,以获得项目中正确的开始日期和时间

prProject.Tasks(i).Start = StartDate + prProject.DefaultStartTime

长答案

日期始终包含时间部分,但如果未明确设置,则为 12:00 上午。日期实际上是一个数字,整数部分代表日期,小数部分代表时间。在 VBA 中,今天的日期是 43208(例如,如果您从 1/1/1900 开始,则 2018 年 4 月 18 日是第 43,208 天)。

您要输入的值是 Excel + 9:00 上午的日期,即 9 ÷ 24。

虽然您可以添加 9 ÷ 24,但您应该做的是使用您的日程安排中设置的默认开始时间。使用该值将使您不必在默认开始时间更改时更新代码(或在您可能 运行 使用此宏的另一个计划中有所不同)。