如何从MS Excel添加列到MS Project – VBA

我正在编写一个macros,将MS Excel工作表中的数据列添加到已有的MS Project文档中。 当我运行我的macros正确的项目被打开,但我得到一个错误消息说,我打开的项目已被删除,即使它没有被删除。

这是我目前的macros:

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 

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

以下是您需要更新“实际持续时间”列的代码。 根据需要更改表名称。 根据需要更新范围参考; 不要包含标题单元格。

  ' 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方法select列时,索引从2开始。

TableEditEx方法

SelectColumn方法