如何从 Excel VBA 的总体规划中获取 MSP 子项目状态日期
How to get MSP subproject statusdate in a masterplan from Excel VBA
我正在构建一个 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,但这需要很长时间,具体取决于子项目的数量。有没有一种方法可以在不打开子项目的情况下在上面的循环中获取此信息?
要获取子项目的状态日期,请使用 SourceProject 属性 引用基础子项目属性:
ThisWorkbook.Sheets("test").Cells(ligne, 7).Value = subproj.SourceProject.StatusDate
我正在构建一个 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,但这需要很长时间,具体取决于子项目的数量。有没有一种方法可以在不打开子项目的情况下在上面的循环中获取此信息?
要获取子项目的状态日期,请使用 SourceProject 属性 引用基础子项目属性:
ThisWorkbook.Sheets("test").Cells(ligne, 7).Value = subproj.SourceProject.StatusDate