Application.AddSiteColumn 方法 (Project)

添加一个列,该列可用于活动项目的已同步 SharePoint 网站中的任务列表。

语法

表达式AddSiteColumn (ProjectFieldSharePointName)

expression:表示 Application 对象的变量。

参数

名称 必需/可选 数据类型 说明
ProjectField 可选 PjField 可以是 PjField 枚举中的常量子集之一,它指定要在新列中显示的项目字段;不能是禁止的字段之一 (请参阅备注) 。
SharePointName 可选 Variant 新列的名称。

返回值

Boolean

如果添加了列,则为 True

备注

在以下情况下, AddSiteColumn 方法提供运行时错误 1004“应用程序定义或对象定义的错误”:

  • 活动项目不与同步的 SharePoint 任务列表相关联。 如果项目是本地项目,则可以使用 LinkToTaskList 方法创建同步的 SharePoint 任务列表。

  • 列名称已存在于 SharePoint 任务列表中。 若要查看列名列表,请在 SharePoint 中打开任务列表,然后在“列表”选项卡上选择“修改视图”。“设置编辑视图”>页显示可用于任务列表的所有列名称。

  • ProjectField 值是非任务域,例如 pjResourceActualCost。 SharePoint 任务列表显示任务域,而不是资源字段。

  • ProjectField 值是企业自定义字段(如 pjTaskEnterpriseProjectText1)或查阅表字段(如 pjTaskResourceEnterpriseRBS)。 本地任务自定义域(如 pjTaskText1)有效。

  • ProjectField 值是表 1 中的禁止字段之一。 这些字段是禁止的资源字段和企业自定义字段的补充。 禁止这些字段,因为它们与其他禁止的字段相关,或者具有默认 SharePoint 任务列表中不支持的值类型。

尽管下表中显示的禁止字段可能是 PjField 中的 1,338 个常量中的长列表,但有 357 个(包括本地任务自定义域)可与 AddSiteColumn 方法一起使用。

其他禁止字段

Field Field Field
pjTaskActive pjTaskActualOvertimeWork pjTaskACWP
pjTaskAssignmentDelay pjTaskAssignmentPeakUnits pjTaskAssignmentUnits
pjTaskBaseline[1-10]BudgetCost pjTaskBaseline[1-10]BudgetWork pjTaskBaseline[1-10]FixedCostAccrual
pjTaskBaselineBudgetCost pjTaskBaselineBudgetWork pjTaskBaselineFixedCostAccrual
pjTaskBudgetCost pjTaskBudgetWork pjTaskCalendarGuid
pjTaskConstraintDate pjTaskConstraintType pjTaskCostRateTable
pjTaskDeliverableGuid pjTaskDeliverableType pjTaskDemandedRequested
pjTaskEarnedValueMethod pjTaskEnterpriseOutlineCode[1-30] pjTaskExternalTask
pjTaskFinishSlack pjTaskFixedCostAccrual pjTaskFreeSlack
pjTaskGuid pjTaskHideBar pjTaskHyperlink
pjTaskHyperlinkAddress pjTaskHyperlinkHref pjTaskHyperlinkScreenTip
pjTaskHyperlinkSubAddress pjTaskID pjTaskIgnoreWarnings
pjTaskIndicators pjTaskIsAssignment pjTaskLevelAssignments
pjTaskLevelDelay pjTaskLinkedFields pjTaskManual
pjTaskMilestone pjTaskNotes pjTaskObjects
pjTaskOutlineCode[1-10] pjTaskOutlineLevel pjTaskOutlineNumber
pjTaskPathDrivenSuccessor pjTaskPathDrivingPredecessor pjTaskPathPredecessor
pjTaskPathSuccessor pjTaskPreleveledFinish pjTaskPreleveledStart
pjTaskPriority pjTaskResourceType pjTaskStartSlack
pjTaskStatus pjTaskStatusIndicator pjTaskSubproject
pjTaskSubprojectReadOnly pjTaskTotalSlack pjTaskType
pjTaskWarning pjTaskWorkContour

如果对 SharePointName 参数使用唯一名称,则可以添加任务列表中已存在的字段,尽管这样做的值值得怀疑。

示例

若要使用 AddDurationColumns 宏,请在 SharePoint 网站中创建任务列表,在 Project Professional 中创建项目,然后使用 LinkToTaskList 方法导入任务列表。 通过使用功能区“项目”选项卡上的“设置基线”命令,为活动项目设置基线,然后更改某些任务的工期。

AddDurationColumns 宏将任务工期和基线工期添加到 SharePoint 任务列表中的可用列列表中 (请参阅图 1) 。

注意

运行 AddDurationColumns 宏后,必须将项目保存在 Project Professional 中,以便将更改与 SharePoint 任务列表同步。

Sub AddDurationColumns()
    Dim success As Boolean
    Dim results As String
    Dim columnName As String
    Dim fieldName As PjField
    results = ""
    
    ' Add the first column.
    fieldName = pjTaskBaselineDurationText
    columnName = "Baseline duration"
    
    ' If the field name exists in the SharePoint tasks list, or fieldName
    ' is one of the prohibited fields, the AddSiteColumn method
    ' returns error 1100.
    On Error Resume Next
    
    success = AddSiteColumn(fieldName, columnName)
    
    If success Then
        results = "Added site column: " & columnName
    Else
        results = "Error in AddSiteColumn: " & columnName
    End If
    
    ' Add the second column.
    fieldName = pjTaskDurationText
    columnName = "Current duration"
    
    success = AddSiteColumn(fieldName, columnName)
    
    If success Then
        results = results & vbCrLf & "Added site column: " & columnName
    Else
        results = results & vbCrLf & "Error in AddSiteColumn: " & columnName
    End If
    
    Debug.Print results
End Sub

保存项目后,转到 SharePoint 中的任务列表。 在“ 列表 ”选项卡上,选择“ 修改视图” 命令。 在“设置 - 编辑视图”页上,选择 AddDurationColumns 宏添加的“基线工期”字段和“当前持续时间”字段。 图 1 显示了包含两个新字段的任务列表。

图 1. 将字段添加到同步的 SharePoint 任务列表

将域添加到同步的任务列表

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。