Ms project 如何使用VBA同时从Excel导入任务开始日期和任务完成日期?

Ms project 如何使用VBA同时从Excel导入任务开始日期和任务完成日期?,ms-project,Ms Project,当我尝试使用下面的代码导入任务开始日期和任务完成日期时,第一个任务的日期似乎导入正常,但后续任务的日期值会发生更改。如果我注释掉行,MapEdit Name:=“Map”,DataCategory:=0,FieldName:=“Finish”,ExternalFieldName:=“Task\u Finish\u Date”,只导入开始日期,那么所有任务的开始日期都会导入正确的日期(日期不会更改),当然,我不会获取完成日期。如何导入所有任务的开始日期和完成日期 MapEdit Name:=&qu

当我尝试使用下面的代码导入任务开始日期和任务完成日期时,第一个任务的日期似乎导入正常,但后续任务的日期值会发生更改。如果我注释掉行,
MapEdit Name:=“Map”,DataCategory:=0,FieldName:=“Finish”,ExternalFieldName:=“Task\u Finish\u Date”
,只导入开始日期,那么所有任务的开始日期都会导入正确的日期(日期不会更改),当然,我不会获取完成日期。如何导入所有任务的开始日期和完成日期

MapEdit Name:="Map ", Create:=True, OverwriteExisting:=True, DataCategory:=0, CategoryEnabled:=True, _
        TableName:=ws.Name, FieldName:="Name", ExternalFieldName:="Task_Name", ExportFilter:="All Tasks", ImportMethod:=0, _
        HeaderRow:=True, AssignmentData:=False, TextDelimiter:=Chr$(9), TextFileOrigin:=0, UseHtmlTemplate:=False, IncludeImage:=False
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Outline Level", ExternalFieldName:="Task_Outline_Level"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Created", ExternalFieldName:="Task_Created_Date"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Start", ExternalFieldName:="Task_Start_Date"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Finish", ExternalFieldName:="Task_Finish_Date"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="% Complete", ExternalFieldName:="Task_Percent_Complete"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Notes", ExternalFieldName:="Task_Notes"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Board Status", ExternalFieldName:="Task_Board_Status"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Resource Names", ExternalFieldName:="Project_Resources"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Task Tags", ExternalFieldName:="Task_Tags"
    MapEdit Name:="Map ", DataCategory:=0, FieldName:="Task Mode", ExternalFieldName:="Task_Mode"
    
FileOpenEx Name:=xlFile2, ReadOnly:=False, Merge:=0, FormatID:="MSProject.ACE.14", map:="Map ", DoNotLoadFromEnterprise:=True

看起来我能够解决导入任务开始和完成日期的问题

正如我所怀疑的那样,问题不在于我的VBA——而在于从Excel传递到MS Project的数据。我使用powerquery从数据源中将数据拉入Excel。Power Query使用空值“填充”空日期类型值。我将数据作为日期类型值从Power Query传递到Excel。这将引入空日期,而不是空日期。然后,当我将Excel中假定为空但实际上为空的日期值导入MS Project时,Project在我的整个任务中添加了新的和更改了现有的日期


现在我要做的是,将Power Query中的日期值从日期类型值更改为文本类型值。同样在Power查询中,我将每个空日期条目转换为“”。这样,当我将数据从Power Query传递到Excel时,日期作为文本类型值传递,空日期作为实际的空日期带入Excel。(我确实将Excel中的日期列格式化为日期。)并且,当我随后将这些空值从Excel导入MS Project时,Project会正确地处理它们。

如果没有看到正在导入的实际数据样本和生成的计划,很难说发生了什么。建议在不导入大纲级别和完成百分比的情况下进行测试;为此,请从最小字段(任务名称、开始、完成)开始,并添加影响日期计算的字段(例如,OL、%完成、任务模式)。