【问题标题】:How to iterate all rows and columns through a loop in MS project如何通过MS项目中的循环迭代所有行和列
【发布时间】:2020-07-01 07:23:08
【问题描述】:

正在处理 Ms 项目文件,目前在以下两个方面遇到问题

1) 现在正在尝试通过循环迭代所有行和列 例如:-

Task      ResourcesName      Start 

products    xxxx              10/3/2017

projects    yyyy              11/04/2017

我可以使用下面的代码获取第一列值(任务)名称

dim var = ActiveProject.Tasks(x + 1).Name

但我需要遍历资源名称和起始列,并且需要将所有值存储在变量中

2) 第二个问题是我观察到在我的 MPP 文件中,某些列的名称类似于

  1. 任务
  2. 资源名称
  3. 启动等

但是,如果我尝试使用以下代码存储列值

For each oSubTasks in Activeproject.Task    
    dim var1 = oSubTasks.GetField(FieldNameToFieldConstant("Task"))    
next

值类似于 Text1、Text2 等

我的问题是如何从 MPP 文件列中获取实际显示的值

【问题讨论】:

    标签: vba ms-project


    【解决方案1】:

    看来您可能使用的是 vb.net 而不是 vba,因为您声明它有效:

    dim var = ActiveProject.Tasks(x + 1).Name
    

    如果是这种情况,请确保在编写代码时使用Early Binding,以便使用IntelliSense (more info)。这样你就声明了oSubTask As MSProject.Task,当你输入oSubTask,后面跟一个句点时,你会得到一个属性和方法的下拉列表。

    其次,您声明要获取“实际显示的值”。对于任务名称和资源名称等字符串字段,存储的内容和显示的内容没有区别。但是,对于日期字段,情况并非如此。要将任务的开始日期作为日期值获取,请使用:oSubTask.Start。但是要获取显示的日期的字符串表示形式,请使用:oSubTask.GetField(pjTaskStart)

    这是一个 VBA 示例:

    Dim oSubTask As Task
    Dim taskName As String
    Dim taskRes As String
    Dim taskStart As Date
    Dim formattedStart As String
    
    For Each oSubTask In ActiveProject.Tasks
        taskName = oSubTask.Name
        taskRes = oSubTask.ResourceNames
        taskStart = oSubTask.Start
        ' to see how the date is displayed, use GetField
        formattedStart = oSubTask.GetField(pjTaskStart)
    
        ' do something with these values
    Next
    

    【讨论】:

    • 首先谢谢 Rachel Hettinger,但在我的情况下,显示的值和后端值不一样例如:- 前端值将是任务名称,但是当我从代码中读取时,它给了我 Text1,Text2作为值,但我的问题是如何获得显示的值,因为我需要比较源文件的时间
    【解决方案2】:

    这是一个如何循环访问 Ms-Project 任务并从中读取 Task.NameTask.Start 的示例(到数组中)。

    Dim oSubTasks As Task
    Dim oName(1000) As Variant
    Dim oStart(1000) As Date
    Dim i As Long
    
    i = 1
    For Each oSubTasks In Activeproject.Tasks
        oName(i) = oSubTasks.Name
        oStart(i) = oSubTasks.Start
        i = i + 1
    Next oSubTasks
    

    【讨论】:

    • @vineeth vp 您在我上面的答案中尝试过我的代码吗?它是否按您的预期为您工作?
    猜你喜欢
    • 2016-01-19
    • 1970-01-01
    • 2013-01-14
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多