Ms Project VBA Macro Organizer 到子项目复制问题

Dan*_*kie 4 vba ms-project

我有一行简单的代码,它尝试通过项目组织者将文本字段从主项目/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)

Rac*_*ger 6

问题是需要打开子项目文件才能使用管理器将自定义移动到其中。在主计划中查看子项目的任务与打开的子项目文件不同。

此代码将遍历子项目并将自定义的 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)。

  • 我对你感激不尽,瑞秋再次来救援:) (3认同)