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

如何将MS Excel中的列添加到MS Project-VBA,excel,vba,ms-project,Excel,Vba,Ms Project,我正在编写一个宏,将MS Excel工作表中的一列数据添加到现有的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 Ra

我正在编写一个宏,将MS Excel工作表中的一列数据添加到现有的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

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

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

  ' 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开始


错误发生在哪一行?EXACT错误消息是什么?您是否尝试过为
appProj.FileOpen
提供完整的路径,比如
“C:\What\Ever\Your\path\Is\Project\u 1.mpp”
?并确保在项目中应该发生的所有事情前面加上
aProg.
(例如
aProg.TableEditEx…
或Excel假定在Excel的活动表中不在项目中执行此操作(同时检查复制/粘贴等)。请始终回答您的问题,以便对代码进行格式化。注释中的代码大部分不可读。很抱歉,代码存在格式问题,但是…确切的错误消息是:“运行时错误“1004”:视图或报表无法显示,因为它所基于的表“Project_1.mpp”已被删除。”我在它之前添加了aProg,并收到一条新的错误消息:“运行时错误'438':对象不支持此属性或方法。两个错误都发生在表编辑行上。这很糟糕,但由于以下原因,
TableEditEx
应该是
appProj.TableEditEx