我正在尝试编写一个Excel2016VBA宏,该宏将从Microsoft 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在这一行中,我收到一条错误消息:
“自动化错误。图书馆未注册”
我尝试过谷歌搜索,但我发现的都是一个旧版本的Office/Project。
任何帮助都将不胜感激。
发布于 2016-04-22 23:30:10
子项目已经有一段时间了。它是子项目的成员。因此,不能使用任务对象迭代子项目集合。
我本以为会出现类型错误或将对象设置为"None“的问题。结合您正在获得的错误消息,我认为您可能有一个由VBA环境引用的旧版本的environment库。在Tools >Reference下,您需要的是“MicrosoftProject15.0对象库”。
另一件事。摘要项目中的任务是插入的项目摘要任务。我从未能够通过尝试遍历摘要项目任务来迭代所有任务,除非子项目与其源断开链接(LinkedToSource = False)。根据您正在做的事情,迭代文件夹的文件系统对象、打开每个项目、提取数据、下一步.要做到这一点,您还需要在引用中包括Microsoft脚本运行时。
希望这能有所帮助。如果这回答了问题,请将其标记为这样。
https://stackoverflow.com/questions/36801356
复制相似问题