Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel auf MS Project zugreifen

Excel auf MS Project zugreifen
Thomas
Servus liebe VBA-Gemeinde
Also erst mal hab ich prinzipiell die Frage wie gut man mit Excel auf MS Project zugreifen kann (VBA).
Genauer möchte ich folgendes durchführen.
In Excel habe ich eine Liste mit "SAP Nummern" (Spalte 16) und dem "Status" (Spalte 1).
In MS Projekt steht bei den Vorgängen eine Spalte "SAP-Elemente" und daneben eine Spalte "Status".
Nun möchte ich die Projekt Datei auf Excel synchronisieren.
D.h er soll in Excel die SAP Nummern durchgehen, nachschauen ob die in Projekt stehen und wenn ja, dann soll er den "Status" (ist ein Text, kein Prozent) von Excel in Projekt schreiben.
Ich kenn mich zwar einigermaßen in Excel VBA aus, aber nicht in VBA Projekt. Mit den Makrorekoder ist momentan kein weiterkommen möglich.
Würde mich freuen wenn mir jemand weiterhelfen könnte.
gruß
thoemmy
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Excel auf MS Project zugreifen
14.04.2010 00:53:40
fcs
Hallo Thoemmy,
im Prinzip funktioniert das recht gut, man muss sich aber sehr gut in der Objekt-/Datenstruktur von MS-Projekt auskennen und wie immer hat Microsoft es geschafft, gleichartige Methoden in den verschiedenen Anwendungen unterschiedlich zu benennen.
Man kann den Datenabgleich sowohl von MS Project aus, was bei meinen Versuchen sogar reibungsloser funktionierte, als auch von Excel aus durchführen. Die Problem von Excel aus lagen wahrscheinlich z.T. darin begründet, dass ich mit einer MS Projekt 2010 beta-Version arbeite und beim Starten der Anwendung immer die Abfrage nach einem Product-Key erfolgt.
Mit der Spalte Status könntest du allerdings Probleme bekommen. Dies ist in MS Project ein berechneter Wert basierend auf den Datums-Angaben(Start/Ende), aktuellem Datum und dem Wert von "% abgeschlossen". Den Status kann man nicht editieren. Es sei denn, du hast dir da irgendetwas spezielles zurecht gebastelt. Status hat die folgenden Werte:
pjComplete   0   Vorgang abgeschlossen.
pjFutureTask 3   Zukünftiger Vorgang.
pjLate       2   Verspäteter Vorgang.
pjNoData     4   Status nicht verfügbar.
pjOnSchedule 1   Vorgang termingerecht. 

Nachfolgend zwei Beispiel-Makros für den Datenaustausch Excel--MS Project. Die Angaben zu "PercentCompleted" (% abgeschlossen) werden aus einem Excel-Blatt nach Project übertragen. Dabei werden die PSP-Codes aller Tasks in der Project-Datei in einer Schleife durchlaufen und im Exceltabellenblatt gesucht. Wenn gefunden, dann wird der Wert übertragen.
Gruß
Franz
'####       VBA-Makro in MS Project 2010 beta erstellt     ######
'Abgleich mit Informationen in Excel-Datei, Exceldatei sollte vor Start des Makros geschlossen  _
sein.
'Im MS Project-VBA-Editor muss der Verweis auf die
'Microsoft Excel Object Library
'gesetzt werden!!
Sub Suchen_PSP()
' PSP_Element in Exceldatei suchen und "% abgeschlossen" einlesen suchen
Dim xlApp As Object, xlWb As Excel.Workbook, xlWks As Excel.Worksheet, _
xlRange As Excel.Range
Dim oProject As Project, oTask As Task, sPSP_Code$, sStatus
Set oProject = Application.Projects("ProjektTest01.mpp")
Set xlApp = VBA.CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Open(FileName:="C:\Users\Public\Test\WBS_Status.xls", _
ReadOnly:=True)
Set xlWks = xlWb.Worksheets(1)
With oProject
For Each oTask In .Tasks
sPSP_Code = oTask.WBS 'PSP-Element in Project
'PSP-Element in Excel-Tabelle Spalte A suchen
Set xlRange = xlWks.Columns(1).Find(what:=sPSP_Code, LookIn:=xlValues, _
lookat:=xlWhole)
If xlRange Is Nothing Then
Else
MsgBox sPSP_Code & " - Status=" & oTask.Status
oTask.PercentComplete = xlRange.Offset(0, 1).Value
MsgBox sPSP_Code & " - Status=" & oTask.Status
End If
Next
End With
xlWb.Close savechanges:=False
xlApp.Quit
MsgBox " Abgleich mit Exceldatei abgeschlossen"
End Sub
'##########         Erstellt mit Excel 2007     #########
'Getestet mit MS Project 2010 beta, MS Project muss vor Start des Makros geöffnet sein
'Variante mit Create-Objekt funktionierte nicht, möglicher Weise wegen Beta-Version
'Im Excel-VBA-Editor muss der Verweis auf die
'Microsoft Project Object Library
'gesetzt werden!!
Option Explicit
Sub Abgleich_PSP_Mit_Project()
' PSP_Element in Exceldatei suchen und "% abgeschlossen" einlesen
Dim proApp As Object, proProject As MSProject.Project, proTask As MSProject.Task
Dim wb As Workbook, wks As Worksheet, sPSP_Code$, Zelle As Range
Set wb = ActiveWorkbook
Set wks = wb.Worksheets(1)
Application.ActivateMicrosoftApp (xlMicrosoftProject)
MSProject.FileOpenEx Name:= _
"C:\Users\Admin\Documents\ProjektTest01.mpp", _
ReadOnly:=False, FormatID:="MSProject.MPP"
Set proProject = ActiveProject
With proProject
For Each proTask In .Tasks
sPSP_Code = proTask.WBS
Set Zelle = wks.Columns(1).Find(what:=sPSP_Code, LookIn:=xlValues, _
lookat:=xlWhole)
If Zelle Is Nothing Then
Else
MsgBox sPSP_Code & " - Status=" & proTask.Status
proTask.PercentComplete = Zelle.Offset(0, 1).Value
MsgBox sPSP_Code & " - Status=" & proTask.Status
End If
Next
End With
FileSave
MSProject.FileCloseEx
ActiveWorkbook.Activate
MsgBox " Abgleich MS-Project - Exceldatei abgeschlossen"
End Sub

Anzeige
AW: Excel auf MS Project zugreifen
14.04.2010 14:32:50
Thomas
Sau cool. Werd ich gleich mal anpassen und testen.
Meld mich dann ob es funzt.
Vielen Dank schonmal.
gruß
Thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Excel auf MS Project zugreifen und synchronisieren


Schritt-für-Schritt-Anleitung

  1. Vorbereitung: Stelle sicher, dass Du sowohl Excel als auch MS Project installiert hast. Öffne die Excel-Datei, die die "SAP Nummern" und "Status" enthält.

  2. VBA-Editor in Excel öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Verweis setzen: Gehe zu Extras > Verweise und setze einen Haken bei "Microsoft Project xx.x Object Library".

  4. Makro erstellen: Füge ein neues Modul hinzu (Einfügen > Modul) und kopiere das folgende VBA-Skript:

    Sub Suchen_PSP()
       Dim xlApp As Object, xlWb As Excel.Workbook, xlWks As Excel.Worksheet, _
       xlRange As Excel.Range
       Dim oProject As Project, oTask As Task, sPSP_Code$, sStatus
       Set oProject = Application.Projects("ProjektTest01.mpp")
       Set xlApp = VBA.CreateObject("Excel.Application")
       Set xlWb = xlApp.Workbooks.Open(FileName:="C:\Users\Public\Test\WBS_Status.xls", _
       ReadOnly:=True)
       Set xlWks = xlWb.Worksheets(1)
    
       With oProject
           For Each oTask In .Tasks
               sPSP_Code = oTask.WBS
               Set xlRange = xlWks.Columns(1).Find(what:=sPSP_Code, LookIn:=xlValues, _
               lookat:=xlWhole)
               If Not xlRange Is Nothing Then
                   oTask.PercentComplete = xlRange.Offset(0, 1).Value
               End If
           Next
       End With
       xlWb.Close savechanges:=False
       xlApp.Quit
       MsgBox "Abgleich mit Exceldatei abgeschlossen"
    End Sub
  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle das Makro Suchen_PSP aus und klicke auf "Ausführen".

  6. Überprüfen: Öffne MS Project, um sicherzustellen, dass die "Status"-Daten korrekt übertragen wurden.


Häufige Fehler und Lösungen

  • MS Project Datei kann nicht geöffnet werden: Stelle sicher, dass die Datei nicht bereits geöffnet ist und der Pfad korrekt ist.

  • VBA-Makro funktioniert nicht: Überprüfe die Verweise im VBA-Editor und ob die "Microsoft Project Object Library" gesetzt ist.

  • Status kann nicht geändert werden: In MS Project ist der Status ein berechneter Wert. Stelle sicher, dass Du den richtigen Wert in die "PercentComplete" Eigenschaft überträgst.


Alternative Methoden

  • Datenimport über Excel: Du kannst auch die "Daten importieren"-Funktion in MS Project verwenden, um Daten aus Excel zu ziehen. Dies kann einfacher sein, wenn Du keine VBA-Kenntnisse hast.

  • CSV-Dateien: Exportiere die Daten als CSV und importiere sie in MS Project. Dies ist eine einfache Methode, um Daten zu übertragen, ohne VBA verwenden zu müssen.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie Du mit VBA Daten aus Excel an MS Project übertragen kannst:

Sub Abgleich_PSP_Mit_Project()
    Dim proApp As Object, proProject As MSProject.Project, proTask As MSProject.Task
    Dim wb As Workbook, wks As Worksheet, sPSP_Code$, Zelle As Range
    Set wb = ActiveWorkbook
    Set wks = wb.Worksheets(1)
    Application.ActivateMicrosoftApp (xlMicrosoftProject)
    MSProject.FileOpenEx Name:="C:\Users\Admin\Documents\ProjektTest01.mpp", _
    ReadOnly:=False, FormatID:="MSProject.MPP"
    Set proProject = ActiveProject
    With proProject
        For Each proTask In .Tasks
            sPSP_Code = proTask.WBS
            Set Zelle = wks.Columns(1).Find(what:=sPSP_Code, LookIn:=xlValues, _
            lookat:=xlWhole)
            If Not Zelle Is Nothing Then
                proTask.PercentComplete = Zelle.Offset(0, 1).Value
            End If
        Next
    End With
    FileSave
    MSProject.FileCloseEx
    MsgBox "Abgleich MS-Project - Exceldatei abgeschlossen"
End Sub

Tipps für Profis

  • Ereignisgesteuerte Makros: Nutze ereignisgesteuerte Makros in MS Project, um Daten automatisch zu synchronisieren, wenn Änderungen in Excel vorgenommen werden.

  • Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung in Dein Makro, um Probleme leichter zu identifizieren.

  • Verwendung von Arrays: Arbeite mit Arrays, um die Leistung zu verbessern, wenn Du große Datenmengen zwischen Excel und MS Project überträgst.


FAQ: Häufige Fragen

1. Wie kann ich eine MPP-Datei in Excel öffnen? Du kannst eine MPP-Datei nicht direkt in Excel öffnen. Du musst die Daten zuerst in MS Project importieren und dann die gewünschten Informationen in Excel exportieren.

2. Was ist der Unterschied zwischen MS Project und Excel? MS Project ist speziell für Projektmanagement entwickelt, während Excel ein Tabellenkalkulationsprogramm ist. Es gibt jedoch Möglichkeiten, beide Programme mithilfe von VBA zu verknüpfen und Daten auszutauschen.

3. Welche Excel-Version benötige ich für die Makros? Die oben genannten Makros wurden mit Excel 2007 erstellt und sind auch mit späteren Versionen wie Excel 2010 und höher kompatibel. Achte darauf, die richtigen Verweise im VBA-Editor zu setzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige