有没有办法可以在Microsoft Project中复制/创建VBA中的日历(或从MPP日历中读取),然后使用2个日期之间的日历计算工作日差异(持续时间)?
Microsoft Project有一个函数DateDifference
,它有三个参数:开始日期,完成日期和日历。您需要将Calendar对象传递给它,而不是日历的字符串名称。返回值是工作分钟数,因此除以适当的数量以获得小时数,通常为480(8小时* 60分钟)。
例如,根据项目日历,这将为您提供12月的工作日数。
Application.DateDifference("12/1/17","12/31/17", ActiveProject.Calendar) / 480
这是相关的MSDN文章。
如果您的日历是标准的(E.G。周一至周五的5天工作周),您可以创建自己的功能,如:
Function Workdays(Start_Date As Date, End_Date As Date) AS Integer
Dim Temp_Delta As Integer, X As Integer, Y As Integer
Temp_Delta = End_Date - Start_Date
Temp_Delta = 5 * (Temp_Delta \ 7)
X = Weekday(End_Date, vbMonday)
Y = Weekday(Start_Date, vbMonday)
If X > 5 Then X = 5
If Y > 5 Then Y = 5
Temp_Delta = Temp_Delta + X - Y
Workdays = Temp_Delta
End Function