vba - 如何从 Excel VBA 获取总体规划中的 MSP 子项目状态日期

标签 vba excel ms-project

我正在构建一个 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

关于vba - 如何从 Excel VBA 获取总体规划中的 MSP 子项目状态日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52271111/

相关文章:

vba - 查找所有公式并将它们向下拖动 (FillDown) 到某个行号,从而跳过其中包含值的单元格?

Python/Excel - 使用 xlrd 进行条件单元格打印

python - 如何将轮廓画到顶部?

excel - 运行时错误 462 远程服务器计算机不存在 - 第一次运行正常,第二次代码运行时出错 - MS Project 和 Excel

c# - 从 C# 以编程方式访问 Microsoft Project (MPP) 文件

add-in - 为 MS Project 开发插件/扩展

excel - 如何实例化动态空数组并添加其第一个元素?

excel - 需要对象 - 将变量传递给函数

regex - 是否有更好的方法为 Regexp Or 运算符对单词进行分组?

c# - 使用 C# 从 Sharepoint 2007 文档库打开 excel 文件