How to capture SPI&CPI from many projects

E

Edward.hd.wang

I want to get the SPI & CPI from the whole active projects in m
company. The question is I have to open the project and set the statu
date to last Friday one by one, which takes me lots of time. Who coul
tell me any solution to save time
 
J

John

Edward.hd.wang said:
I want to get the SPI & CPI from the whole active projects in my
company. The question is I have to open the project and set the status
date to last Friday one by one, which takes me lots of time. Who could
tell me any solution to save time.

Edward,
I think what you need is a dynamic master. First open a new blank
project. Then go to Insert/Project and insert each of your company's
individual files. That will create a dynamically consolidated master.
Set the status date at the master level and that should give you what
you want.

Disclaimer - I haven't actually done earned value metrics on a
consolidated file so I can't promise this will work, but it is easy to
try.

John
Project MVP
 
E

Edward.hd.wang

John,
It is the way I am doing. But the master plan could not change the
status date of each project. I have tried that.
Edward
 
J

Jim Aksel

You will need a Macro to drill the status date down to all the individual
tasks.
Also, in the master project, you will need to show a summary task for the
entire project (Tools/Options.... check Show Project Summary Task)

For the Macro, here is some code that will do it for you. Please post back
if you have any questions. You will need to execute the macro
DriveDownStatusDate from your macro window. The other sub is private as it
is called recursively by the first subroutine.

If you found this post helpful, please feel free to rate it.

Public Sub DriveDownStatusDate()

Dim result As VbMsgBoxResult
result = vbNo 'set to safe state
Dim statusDate As Date
statusDate = ActiveProject.statusDate

result = MsgBox("Status Date: " & ActiveProject.statusDate & vbCrLf & _
"Assign this status date (recursively) to all subprojects in the active
project?", _
vbQuestion + vbOKCancel, "Confirm Status Date Propogation")

If result = vbOK Then
Call DrillStatusDown(Application.ActiveProject, statusDate)
Else
MsgBox ("Action canceled by user")
End If
End Sub

Private Sub DrillStatusDown(ByRef mProject As Project, ByVal statusDate)
Dim sProject As Subproject
Dim bproject As Project

If mProject.Subprojects.Count < 1 Then
'Base Case
mProject.statusDate = statusDate
Exit Sub
End If

For Each sProject In mProject.Subprojects
'An inserted project may be a master project by itself.
Set bproject = sProject.SourceProject
bproject.statusDate = statusDate
Call DrillStatusDown(bproject, statusDate) 'recursively push status date
Next
End Sub
 
J

John

Edward.hd.wang said:
John,
It is the way I am doing. But the master plan could not change the
status date of each project. I have tried that.
Edward

Edward,
Well I'm glad I put my disclaimer in. Normally I try to do more thorough
research but I didn't have time when I responded so I gave a quick
response that I thought might work - unfortunately as you already found
out, it doesn't. However, it looks like Jim had more time to provide a
full answer. If that doesn't resolve it, let us know.

John
 
E

Edward.hd.wang

Hi Jim, it works! Just let me know how to add a code to refresh th
screen, otherwise the data will stay the same till I switch th
screens
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top