gpt4 book ai didi

vba - 如何通过 MS 项目中的循环迭代所有行和列

转载 作者:行者123 更新时间:2023-12-05 04:11:27 25 4
gpt4 key购买 nike

我正在处理 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 文件列中获取实际显示的值

最佳答案

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

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

如果是这种情况,请确保使用 Early Binding所以你有 IntelliSense ( more info ) 在您编写代码时。通过这种方式,您可以将 oSubTask 声明为 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

关于vba - 如何通过 MS 项目中的循环迭代所有行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com