无法将MS Project 2013任务读入Excel 2016 VBA

时间:2016-04-22 18:53:21

标签: excel vba ms-project

我正在尝试编写Excel 2016 VBA宏,该宏将从Microsoft Project 2013摘要项目(包含我所有活动项目的项目)中读取数据,并将数据汇总到Excel中的摘要表中。

这是我到目前为止的代码:

Sub ExtractFromMsProject(ProjectPath As String)

  Dim ProjectApp As MSProject.Application
  Dim EachProject As MSProject.Project
  Dim ProjectFile As MSProject.Project
  Dim SubProjectFile As MSProject.SubProject
  Dim SubProjectIndex As Long

  On Error Resume Next
  Set ProjectApp = GetObject(, "MSProject.Application")
  If ProjectApp Is Nothing Then
    Set ProjectApp = New MSProject.Application
  End If
  ProjectApp.DisplayAlerts = False
  For Each EachProject In ProjectApp.Projects
    If ProjectPath = EachProject.FullPath Then
      Set ProjectFile = EachProject
      Exit For
    End If
  Next
  If ProjectFile Is Nothing Then
    If ProjectApp.FileOpenEx(Name:=ProjectPath, ReadOnly:=True) Then
      Set ProjectFile = ProjectApp.ActiveProject
    Else
      MsgBox "Unable to open the source project file '" & ProjectPath & "'."
      Exit Sub
    End If
  End If
  ProjectApp.Visible = True
  For Each SubProjectFile In ProjectFile.Subprojects

  Next
' For SubProjectIndex = 0 To ProjectFile.Subprojects.Count - 1
'   Set SubProject = ProjectFile.Subprojects(SubProjectIndex)
' Next

  ProjectApp.FileCloseEx pjDoNotSave
  ProjectApp.Quit

End Sub

在我到达之前它很有效:

For SubProjectIndex = 0 To ProjectFile.Subprojects.Count - 1

在该行,我收到一条错误消息:

  

"自动化错误。图书馆未注册"

我试图进行一些Google搜索,但我找到的所有内容都是旧版本的Office / Project。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

Subproject已经有一段时间了。它是子项目的成员。因此,您无法使用任务对象迭代Subprojects集合。

我原本期望出现类型错误或对象被设置为"无"的问题。这与您收到的错误消息相结合,使我认为您可能拥有VBA环境引用的旧版MS Project库。在工具>下引用您需要的是" Microsoft Project 15.0对象库"。

另一件事。摘要项目中的任务是插入的项目摘要任务。我从来没有能够通过尝试迭代摘要项目任务来迭代所有任务,除非子项目与源的链接断开(LinkedToSource = False)。根据你正在做的事情,为文件夹迭代File System Object,打开每个项目,提取你的数据,接下来......可能同样有效...为此,你需要包含Microsoft Scripting Runtime in参考文献也是如此。

希望有所帮助。如果这回答了问题,请标记为这样。