如何从 MS-Project 获取使用 VBA 的员工的工作和缺勤天数?(员工就是资源)
一些附加信息:
我知道如何获得任务
Dim ts as Tasks
Set ts = ActiveProject.Tasks
我知道如何从我的项目文件中获取资源:
Dim rs as Resources
Set rs = ActiveProject.ressources
但我没有找到一种(微不足道的)方法来从这些变量中获取工作和缺勤天数。
如何从 MS-Project 获取使用 VBA 的员工的工作和缺勤天数?(员工就是资源)
一些附加信息:
我知道如何获得任务
Dim ts as Tasks
Set ts = ActiveProject.Tasks
我知道如何从我的项目文件中获取资源:
Dim rs as Resources
Set rs = ActiveProject.ressources
但我没有找到一种(微不足道的)方法来从这些变量中获取工作和缺勤天数。
您需要查看 Resource 对象以找到工作日和非工作日:
ActiveProject.Resources.Item(1).Calendar
在这个简单的示例中,我们将获取项目中的第一个资源并提取它的关联日历。
资源日历将具有从中继承的基准日历:
...Calendar.BaseCalendar
资源日历和基准日历都定义了工作日、工作日和例外情况。例外情况通常是定义缺勤时间的方式......即它们是正常工作模式的例外情况:
...Calendar.WorkWeeks
...Calendar.WeekDays
...Calendar.Exceptions
答案已经提供了入门信息,但实际上并没有回答这个问题。如前所述,“例外”确实是如何定义缺勤期,但要确定给定日期是否是异常对象的缺勤日,将需要大量的解析代码。
凭经验确定工作日会简单得多,也可靠得多。假设变量“cal”是有问题的日历,声明一个 long 类型的变量(比如“d”),然后从某个开始日期循环到某个结束日期-1 并确定该日期是否是工作日,使用 Application.datedifference(d , d+1, 校准)。非工作日将产生 0。