Как получить рабочие дни и дни отсутствия работника (ресурса)? - PullRequest
0 голосов
/ 14 октября 2011

Как получить рабочие дни и дни отсутствия работника с VBA из MS-Project?(сотрудник является ресурсом)

Некоторые дополнительные сведения:

Я знаю, как получать задания

Dim ts as Tasks
Set ts = ActiveProject.Tasks

, и я знаю, как получить ресурсы из файла моего проекта:

Dim rs as Resources
Set rs = ActiveProject.ressources

но я не нахожу (тривиального) способа получить дни работы и отсутствия из этих переменных.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Вам нужно посмотреть на объект Resource, чтобы найти рабочие и нерабочие дни:

ActiveProject.Resources.Item(1).Calendar

В этом тривиальном примере мы выбираем первый ресурс в проекте и извлекаем его связанныйКалендарь.

Календарь ресурсов будет иметь базовый календарь, от которого он наследует:

...Calendar.BaseCalendar

, а календарь ресурсов и базовый календарь определяют рабочие дни, рабочие недели и исключения.Исключения, как правило, определяют периоды отсутствия ... т.е. они являются исключениями из обычного режима работы:

...Calendar.WorkWeeks
...Calendar.WeekDays
...Calendar.Exceptions
0 голосов
/ 07 ноября 2018

Ответ уже предоставил информацию для начала, но на самом деле не отвечает на вопрос. Как уже говорилось, «Исключения» - это действительно то, как определяются периоды отсутствия, но для определения того, является ли данная дата днем ​​отсутствия в объекте исключения, потребуется немаловажное количество кода анализа.

Было бы намного проще и надежнее определять рабочие дни эмпирически. Предполагая, что переменная "cal" - это рассматриваемый календарь, объявите переменную (скажем, "d") типа long, затем цикл с некоторой начальной даты до некоторой конечной даты-1 и определите, является ли эта дата рабочим днем ​​или нет, используя Application.datedifference (d). , д + 1, кал). Нерабочий день принесет 0.

...