Hallo Barbara,
das erste Kundenecho: "MS-Project kann ja doch mehr"...
Diese ist schon verständlich.
Arbeitsfreie Zeit wird bei „Summe Dauer Sammelvorgang“ berücksichtigt, aber nicht „keine Nutzung/Belegung möglicher Arbeitszeit“.
Zu Deinem Re/Aw: So ein Thema ist Dir noch nicht mitgeteilt worden:
Als Minibeispiel:
Montag bis Freitag = Arbeit,
Samstag und Sonntag = arbeitsfrei
Vorgang 1: Montag
=1 Tag
Vorgang 2: am nächsten Montag = 1 Tag
Project zeigt im „Dauer Sammelvorgang“ ‚ 6 Tage an
(Mo bis Mo = 8 Tage minus arbeitsfrei Sa/So = 6 Tage)
Samstag und Sonntag werden also in „Dauer Sammelvorgang“ abgezogen.
Dienstag bis Freitag findet aber auch nix statt – ergo: richtiges Ergebnis wäre „Dauer Sammelvorgang“ = 2 Tage mit Start: Montag
und mit Ende: nächsten Montag.
So wie nach Durchlauf Deines Makros.
Der Abzug „arbeitsfreier Zeit“ sollte eben nicht nur der Abzug „arbeitsfreier Zeit“ aus Kalender“ sein.
In den Projekten kommen sehr oft „Wartezeiten“ oder „technisch bedingte Wartezeiten (z.Bsp. Betonabbindung)“vor. Diese werden in
der Regel über EA/AA-Beziehungen usw. mit +Tagen oder –Tagen gesteuert/geplant.
Diese Zeiträume werden aber bei „Dauer Sammelvorgang“ summiert, weil im Kalender: „Arbeitszeit“ für diese Tage hinterlegt ist.
Gruß Steffen
P.S.: zu Deinem Makro:
Nicht gut (wie bei mir vorhin) ist es, falls ein Vorgang keine Zuweisung „Arbeit“ vor Makrostart hat.
Lässt sich hier noch was einfügen?
Mit: meinem „Versuch“:
For Each T In ActiveProject.Tasks
SetTaskField Field:="Ressourcennamen", Value:="Tag Arbeit[1]"
Durchlauf für: Zuweisung Arbeit
Next T
For Each T In ActiveProject.Tasks
'If T.Summary And Not T Is Nothing Then - für Sammelvorgänge
If Not T Is Nothing Then
vdur = 0
For vdate = T.Start To T.Finish
Set TSV = T.TimeScaleData(vdate, vdate, pjTaskTimescaledWork, pjTimescaleDays, 1)
For i = 1 To TSV.Count
If TSV(i).Value <> "" Then
vdur = vdur + 1
End If
Next i
Next vdate
T.Duration2 = vdur * 480
End If
Next T
…bin ich gescheitert…