如何从Excel VBA在总体规划中获取MSP子项目状态

问题描述 投票:2回答:1

我正在构建一个Excel仪表板,我希望它从我的部门MSP总体规划中获取数据。

到目前为止,我设法获得了我想要的所有数据,除了子项目的状态。

Sub ImportMSPData()

Dim r As Range
Dim MSP As MSProject.Application
Dim proj As Project
Dim subproj As Subproject
Dim ligne As Long

Set MSP = CreateObject("MSProject.Application")
MSP.Visible = False

Application.ScreenUpdating = False
Application.EnableEvents = False

AppActivate MSP
If MSP.FileOpenEx(MasterplanPath, , , , , , , , , , , pjDoNotOpenPool) Then
    Set proj = MSP.ActiveProject
Else
    MsgBox "Fichier non trouvé : " & vbCrLf & Files.MspRoutine
    Exit Sub
End If

ligne = 1

For Each subproj In proj.Subprojects
        ThisWorkbook.Sheets("test").Cells(ligne, 1).Value = subproj.Path
        ThisWorkbook.Sheets("test").Cells(ligne, 2).Value = Left(subproj.InsertedProjectSummary.Name, 15)
        ThisWorkbook.Sheets("test").Cells(ligne, 3).Value = Mid(subproj.InsertedProjectSummary.Name, 19)
        ThisWorkbook.Sheets("test").Cells(ligne, 5).Value = subproj.InsertedProjectSummary.Start
        ThisWorkbook.Sheets("test").Cells(ligne, 6).Value = subproj.InsertedProjectSummary.Finish
        ligne = ligne + 1
Next
End Sub

我可以通过循环遍历所有支持,打开它们,读取数据并在此之后关闭来获取Statusdate,但这需要永久性,具体取决于子项目的数量。有没有办法在不打开子项目的情况下在上面的循环中获取这些信息?

excel vba excel-vba ms-project
1个回答
1
投票

要获取SubProjects的状态日期,请使用SourceProject属性来引用基础子项目属性:

ThisWorkbook.Sheets("test").Cells(ligne, 7).Value = subproj.SourceProject.StatusDate
© www.soinside.com 2019 - 2024. All rights reserved.