如何使用 VBA 从 Excel 将项目的描述和所有者字段以及任务的状态管理器字段导入 MS Project

How to import to the Project's Description and Owner field and Tasks' Status Manager fields into MS Project from Excel using VBA

感谢 Rachel Hettinger's 的帮助,我已经能够创建 VBA 宏来打开 Excel 工作簿并从工作表创建新项目。我能够导入几乎所有我需要的项目级和任务级字段,但我确实遇到了障碍。无法将数据导入我在 Project Web App 或任务级别 中看到的项目级别 DescriptionOwner 字段我在客户端看到的 Status Manager 字段。

以下是我如何处理任务级字段的摘录:

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"

FileOpenEx Name:=xlFile2, ReadOnly:=False, Merge:=0, FormatID:="MSProject.ACE.14", map:="Map ", DoNotLoadFromEnterprise:=True

这是我如何处理项目级字段的非常有限的摘录:

'Project Departments
x = 0       
For x = 1 To wbk.ActiveSheet.Range(colRangeAddress).Columns.Count
    If wbk.ActiveSheet.Cells(1, x) = "Directorate" Then
        dept = wbk.ActiveSheet.Cells(2, x).Value
        Exit For
    End If
Next x

'Customer
x = 0           
For x = 1 To wbk.ActiveSheet.Range(colRangeAddress).Columns.Count
    If wbk.ActiveSheet.Cells(1, x) = "Project_Customer" Then
        customer = wbk.ActiveSheet.Cells(2, x).Value
        Exit For
    End If
Next x
   
ActiveProject.ProjectSummaryTask.SetField FieldNameToFieldConstant("Project Departments"), dept
ActiveProject.ProjectSummaryTask.SetField FieldNameToFieldConstant("Customer"), customer

Application.FileSaveAs Name:=myPath & projName, FormatID:="MSProject.mpp" 'Name:="<>\" & projName to send to server
                

如前所述,我无法将数据导入到我在 Project Web App 中看到的项目级 DescriptionOwner 字段或我在客户端中看到的任务级别 Status Manager 字段。这是我在 PWA 中看到 DescriptionOwner 字段的地方:

以及客户端中的状态管理器字段:

我尝试以与成功导入其他字段相同的方式导入这些字段,但无法成功。如何使用 VBA?

导入这三个字段

项目级 描述所有者 字段只存在于 PWA 中而不存在于计划中,因此无法更新它们使用 VBA。应该可以直接更新数据库,但这涉及更多的工作。和你的 dba 谈谈如何去做。

状态管理器字段可通过 VBA 更新,但不能在项目摘要任务中更新。使用相同的代码,但在任务级别。例如:

ActiveProject.Tasks(5).SetField FieldNameToFieldConstant("Status Manager"), mgr