问题描述
我有一条简单的代码行,尝试通过项目组织者将文本字段从主项目/Global.mpt复制到主项目(活动项目)中的子项目。我已经尝试了多种方法,但是我都失败了 找不到“运行时错误1101,文件Schedule 1”,或者“在这种情况下此值无效,请检查字段以查看它是否需要文本,日期或数字,并且您正确键入了信息”。 感谢你的帮助。谢谢
'OrganizerMoveItem Type:=pjFields,FileName:="MASTER SCHEDULE.mpp",ToFileName:=" Schedule1.mpp",Name:="Text27"
'OrganizerMoveItem Type:=pjFields,FileName:="C:\xx\MASTER SCHEDULE.mpp",_
'ToFileName:=ActiveProject,Name:="T27(Text27)"
OrganizerMoveItem Type:=9,FileName:="GLOBAL.MPT",_
ToFileName:=ActiveProject.Subprojects("Schedule1.mpp"),Name:="T27"
解决方法
问题是子项目文件需要打开才能使用管理器将自定义项移入该文件。在主计划中查看子项目的任务与打开子项目文件不同。
此代码将遍历子项目,并通过使用管理器打开定制的Text27字段,然后将其关闭并保存,将其复制到每个文本字段。
Sub CopyCustomFieldToSubprojects()
Dim master As Project
Set master = ActiveProject
Dim prj As Subproject
For Each prj In master.Subprojects
FileOpenEx prj.Path
Projects(prj.SourceProject.Name).Activate
Application.Alerts False
OrganizerMoveItem Type:=pjFields,FileName:=master.Name _,ToFileName:=ActiveProject.Name,Name:="T27 (Text27)"
Application.Alerts False
FileCloseEx pjSave
Next prj
End Sub
请注意,OrganizerMoveItem方法需要FileName和ToFileName参数的文件名(字符串),而不是Project对象(例如Filename:=master.Name
)。