【问题标题】:Ms Project VBA Macro Organiser to subproject copy issueMs Project VBA Macro Organizer 到子项目复制问题
【发布时间】:2020-12-12 19:00:05
【问题描述】:

我有一行简单的代码尝试通过项目管理器将文本字段从主项目/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"

【问题讨论】:

    标签: vba ms-project


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你,瑞秋又来救援了 :)
    猜你喜欢
    • 2021-11-29
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2019-02-09
    • 2021-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多