如何在 MPP VBA 中创建自定义日历并计算两个日期之间的工作日差异?

How to create a customized calendar in MPP VBA and take a work day difference between 2 dates?

有什么方法可以在 Microsoft Project 中 duplicate/create VBA 中的日历(或从 MPP 日历中读取),然后使用该日历计算两个日期之间的工作日差异(持续时间)?

如果您的日历是标准日历(例如,每周工作 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

Microsoft Project 有一个函数 DateDifference,它接受三个参数:开始日期、完成日期和 Calendar。您需要将日历对象传递给它,而不是日历的字符串名称。 return 值是工作分钟数,因此除以适当的数量得到小时数,通常是 480(8 小时 * 60 分钟)。

例如,这会根据项目日历为您提供 12 月的工作日数。

Application.DateDifference("12/1/17","12/31/17", ActiveProject.Calendar) / 480

这是相关的 MSDN 文章。