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

时间:2018-04-18 07:15:51

标签: excel vba ms-project

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

问题在于,正如我现在所做的那样,每个任务的开始时间设置为上午12:00,这给了我关于EndDate评估的问题(假设我使用StartDate和持续时间为每项活动)。

const formattedDate=new Date(this.editCheckinData[ 'pre_check_in']);
this.editCheckinForm.controls[ 'pre_check_in' ].setValue(formattedDate);

我没有复制整个代码,因为它有点长,我希望它是可以理解的。 基本上,我循环Excel工作表的每一行,并在MS Project中传输每个活动的StartDate,存在于第二列。

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

由于

2 个答案:

答案 0 :(得分:0)

为什么不在设置项目开始之前将小时设置为上午9:00?这应该有所帮助: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

答案 1 :(得分:0)

快速回答

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

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

长答案

日期始终具有时间组件,但如果未明确设置,则为12:00 AM。日期实际上是数字,整数部分代表日期,分数部分代表时间。在VBA,今天的日期是43208(例如,如果你从1900年1月1日开始,2018年4月18日是第43,208天)。

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

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