我有一行简单的代码,它尝试通过项目组织者将文本字段从主项目/Global.mpt 复制到主项目(活动项目)中的子项目。我尝试了多种方法,但我失败了,要么是“运行时错误 1101,未找到文件附表 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"
Run Code Online (Sandbox Code Playgroud)
问题是需要打开子项目文件才能使用管理器将自定义移动到其中。在主计划中查看子项目的任务与打开的子项目文件不同。
此代码将遍历子项目并将自定义的 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
Run Code Online (Sandbox Code Playgroud)
请注意,OrganizerMoveItem方法需要 FileName 和 ToFileName 参数的文件名(字符串),而不是 Project 对象(例如Filename:=master.Name)。