【发布时间】:2016-08-16 12:42:03
【问题描述】:
我正在尝试编写一个 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。
任何帮助将不胜感激。
【问题讨论】:
-
您已将 SubProject 声明为 Task 对象,而不是 SubProject 对象。此外,SubProject 是一个关键字;为您的变量名称选择一个非关键字。也就是说,尝试“对于 ProjectFile.SubProjects 中的每个子项目”。
-
我将 SubProject 的声明从 Task 对象修复为 SubProject 对象,并根据您的建议将 SubProject 的变量名称更新为 SubProjectFile,但我仍然遇到相同的错误。还有其他想法吗?
-
看看这个页面,好像是相关的:Removing Outdated References to Project...
标签: excel vba ms-project