2016-04-22 8 views
0

Ich versuche, ein Excel 2016 VBA-Makro zu schreiben, das die Daten aus einem Microsoft Project 2013 Summary Project lesen wird (Es ist ein Projekt, das alle meine aktiven Projekte enthält) fassen Sie die Daten in einem Übersichtsblatt in Excel zusammen. HierMS Project 2013 Aufgaben können nicht in Excel 2016 VBA gelesen werden

ist der Code Ich habe bisher:

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 

Es funktioniert großartig, bis ich zu bekommen:

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

Zu dieser Linie, erhalte ich eine Fehlermeldung:

"Automatisierungsfehler. Bibliothek nicht registriert"

Ich habe versucht, einige Google-Suche zu tun, aber alles, was ich gefunden habe, ist für eine ältere Version von Office/Project.

Jede Hilfe würde sehr geschätzt werden.

+0

Sie haben SubProject als Task-Objekt und nicht als SubProject-Objekt deklariert. SubProject ist ein Schlüsselwort. Wählen Sie ein Nicht-Schlüsselwort für Ihre Variablennamen. Probieren Sie 'Für jeden SubProj in ProjectFile.SubProjects' aus. –

+0

Ich habe die Deklaration von SubProject von einem Task-Objekt zu einem SubProject-Objekt korrigiert und den Variablennamen von SubProject zu SubProjectFile für Ihren Vorschlag aktualisiert und bekomme immer noch denselben Fehler. Irgendwelche anderen Ideen? – Kyle

+0

Werfen Sie einen Blick auf diese Seite, es scheint relevant zu sein: [Entfernen von veralteten Referenzen zum Projekt ...] (http://kb.palisade.com/index.php?pg=kb.page&id=1418) –

Antwort

0

Subproject war eine Art für eine Weile. Es ist ein Mitglied von Teilprojekten. Daher können Sie die Subprojects-Auflistung nicht mit einem Aufgabenobjekt durchlaufen.

Ich hätte entweder einen Typfehler oder ein Problem mit dem Objekt erwartet, das auf "None" gesetzt ist. In Kombination mit der Fehlermeldung, die Sie erhalten, denke ich, dass Sie möglicherweise eine ältere Version der MS Project-Bibliothek haben, die von Ihrer VBA-Umgebung referenziert wird. Unter Tools> Referenzen benötigen Sie die "Microsoft Project 15.0 Object Library".

Eine andere Sache. Die Aufgaben im Übersichtsprojekt sind die eingefügten Projektzusammenfassungsaufgaben. Ich war nie in der Lage, alle Aufgaben zu durchlaufen, indem ich versuche, die Aufgaben des Übersichtsprojekts zu durchlaufen, es sei denn, die Unterprojekte sind von ihrer Quelle getrennt (LinkedToSource = False). Abhängig davon, was Sie tun, ist es möglicherweise genauso effizient, eine File System Object für den Ordner zu durchlaufen, jedes Projekt zu öffnen, Ihre Daten zu extrahieren, als nächstes ... Dazu müssen Sie auch die Microsoft Scripting Runtime in die Referenzen aufnehmen.

Hoffnung, das hilft. Wenn dies die Frage beantwortet, kennzeichnen Sie sie bitte als solche.

+0

Ich habe aktualisiert die Deklaration von SubProject als Aufgabe zu einem Subprojekt für Ihren Vorschlag und ich kann bestätigen, dass ich "Microsoft Project 15.0 Object Library" referenziert habe. Aber ich bekomme immer noch den gleichen Fehler. Irgendwelche anderen Vorschläge? – Kyle