2017-02-15 1 views
2

Ich bin ein VB-Entwickler arbeiten mit MPP-Dateien zum ersten Mal.Einrücken der Aufgaben in MPP-Datei (Ms Projektdatei) in VBA (Excel zu MPP-Datei)

Mein Code liest Daten aus Excel und schreibt erfolgreich für einige Spalten und Zeilen in die MPP-Datei.

1) Wie die einzelne Zelle in der MPP-Datei auszuwählen, weil ich ein Szenario, wo ich mit dem nächsten Zeile Zelle vergleichen und eine Operation tun

2) Warum können wir nicht angepasst haben Spalten in mpp-Datei (wie Computername, Disc-Name usw.) sein gibt einen Fehler

3) wie die Zellen einrücken halten eine Zelle als Master andere darunter, und es sollte

Code durch die Schleife durchlaufen, die alle Aufgaben löschen

For Each oSubTasks In oTasks 
    If Not oSubTasks Is Nothing Then 
     oSubTasks.Delete 
    End If 
Next oSubTasks 

Code den Spaltenwert

For Each oSubTasks In oTasks 
'if the frist row is blank 
    If oSubTasks.GetField(FieldNameToFieldConstant("Duration")) = "" Then Exit For 
    If oSubTasks.GetField(FieldNameToFieldConstant("Duration")) <> "" Then 
     Mpplastrow = Mpplastrow + 1 
    End If 
Next oSubTasks 

Code für benutzerdefinierte Spalte immer Fehler

If oSubTasks.GetField(FieldNameToFieldConstant("computer name")) = sh1.Cells(rw, primecol).Value Then 
' oTask.SetField FieldID:=oApp.FieldNameToFieldConstant("computer name"), Value:=sh1.Cells(rw, primecol).Value 
'Else 
' oTask.SetField FieldID:=oApp.FieldNameToFieldConstant("computer name"), Value:=sh1.Cells(rw, primecol).Value 
'End If 
+0

haben Sie meine Antwort und den Code unten gelesen? Hast du so etwas gemeint? –

Antwort

0

zu erhalten, um den Einzug Ebene der einzelnen MSP Aufgaben zu lesen, und in der Lage sein, Treten Sie innerhalb (oder außerhalb) ein und versuchen Sie etwas wie den folgenden Code:

Option Explicit 

Sub IndentTasks() 

Dim Tsk As Task 

For Each Tsk In ThisProject.Tasks    
    Select Case Tsk.OutlineLevel '<-- read the current taks Outline Level 
     Case 1 
      If Tsk.ID <> 1 Then 
       Tsk.OutlineIndent '<-- indent inside (to the right) 
      End If 

     Case Is > 6 '<-- don;t want your Project to be too indented inside 
      Tsk.OutlineOutdent '<-- indent outside (to the left) 

    End Select 
Next Tsk 

End Sub 
+0

Vielen Dank Shai Rado, es war sehr voll. –

+0

hinzufügen, wie bekomme ich die Spaltennamen und den Wert der Spalten Felder. –