Ms Project VBA 宏管理器到子项目复制问题
Ms Project VBA Macro Organiser to subproject copy issue
我有一行简单的代码试图通过项目管理器将文本字段从主 project/Global.mpt 复制到主项目(活动项目)中的子项目。我尝试了多种方法,但我都失败了
'运行-time error 1101, the file Schedule 1" was not found 或者, "This value is not valid in this situation, 检查该字段以查看它是否需要文本、日期或数字,并且你正确输入信息”。
感谢你的帮助。谢谢
'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 参数的文件名(字符串)而不是项目对象(例如 Filename:=master.Name
)。
我有一行简单的代码试图通过项目管理器将文本字段从主 project/Global.mpt 复制到主项目(活动项目)中的子项目。我尝试了多种方法,但我都失败了 '运行-time error 1101, the file Schedule 1" was not found 或者, "This value is not valid in this situation, 检查该字段以查看它是否需要文本、日期或数字,并且你正确输入信息”。 感谢你的帮助。谢谢
'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 参数的文件名(字符串)而不是项目对象(例如 Filename:=master.Name
)。