Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to iterate all rows and columns through a loop in MS project

Tags:

vba

ms-project

Am working on Ms project file and currently am having trouble in below two areas

1) Now am trying to iterate all rows and columns through a loop for ex:-

Task      ResourcesName      Start 

products    xxxx              10/3/2017

projects    yyyy              11/04/2017

I can get first column value(Task) name using below code

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

but I need to traverse to resources name and start column and I need to store all the values in variables

2) second question is I observed that in my MPP file that for some columns names are like

  1. Task
  2. ResourcesName
  3. Start etc

But, If I try to store the column values by using below code

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

The values are like Text1,Text2 etc

My question is that how can i get the actual displayed values from MPP file columns

like image 317
vineeth vp Avatar asked Oct 29 '25 14:10

vineeth vp


1 Answers

It appears that perhaps you are using vb.net rather than vba since you state this works:

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

If that is the case, then make sure you use Early Binding so you have IntelliSense (more info) when you are writing your code. That way you declare oSubTask As MSProject.Task and when you type oSubTask followed by a period you get a drop-down list of the properties and methods.

Secondly, you state that you want to get the "actual displayed values". For string fields such as task Name and Resource Names, there is no difference between what is stored and what is displayed. However, for date fields this is not the case. To get a task's Start date as a date value, use: oSubTask.Start. But to get the string representation of the date as displayed, use: oSubTask.GetField(pjTaskStart).

Here is a VBA sample:

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
like image 70
Rachel Hettinger Avatar answered Oct 31 '25 13:10

Rachel Hettinger



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!