如何将列从 MS Excel 添加到 MS Project - VBA

How to Add Column from MS Excel to MS Project - VBA

我正在编写一个宏,将 MS Excel sheet 中的一列数据添加到现有的 MS Project 文档中。当我 运行 我的宏打开了正确的项目时,我收到一条错误消息,说我打开的项目已被删除,即使它没有被删除。

这是我当前的宏:

Sub newProjectColumn()
Dim appProj As MSProject.Application
Dim aProg As MSProject.Project
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
Set wb = ActiveWorkbook

'~~> Open MS Project
Set ws = wb.Sheets("Sheet1")

Set appProj = CreateObject("Msproject.Application")

appProj.FileOpen "Project_1.mpp"

Set aProg = appProj.ActiveProject

appProj.Visible = True

'~~> Next, create new Column in project
TableEditEx Name:="Project_1.mpp", TaskTable:=True, _
    NewFieldName:="Actual Duration", Title:="Actual Duration", Width:=12, _
    ShowInMenu:=True, _
    ColumnPosition:=29

'~~> Next, copy T:T from Excel.Then, paste to 29th column (i,29) in Project.
Set Rng = ws.Range("T:T")
ActiveSheet.Paste Destination:=Rng
SelectTaskColumn Column:="Actual Duration"

End Sub

任何关于我做错了什么的帮助,或者如果有更好的方法,将不胜感激!

这是更新“实际持续时间”列所需的代码。根据需要更改 table 名称。根据需要更新范围参考;不包括 header 单元格。

  ' add Actual Duration as the first column & apply the table changes
  appProj.TableEditEx Name:="Entry", TaskTable:=True, _
    NewFieldName:="Actual Duration", Title:="Actual Duration", Width:=12, ColumnPosition:=0
  appProj.TableApply "Entry"

  ' copy updated values from Excel (no headers) and paste in new column in Project
  Range("T2:T100").Copy
  appProj.SelectColumn 2
  appProj.EditPaste

  ' delete the column
  appProj.ColumnDelete

请注意,使用 TableEditEx 方法添加列时,索引从 0 开始,而使用 SelectColumn 方法选择列时,索引从 2 开始。

TableEditEx method

SelectColumn method