如何将MS Excel中的列添加到MS Project-VBA
我正在编写一个宏,将MS Excel工作表中的一列数据添加到现有的MS Project文档中。当我运行宏时,会打开正确的项目,但我会收到一条错误消息,说明我打开的项目已被删除,即使它尚未被删除 以下是我当前的宏:如何将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
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
。