Редактирование макросов

В одной из статей  нашего блога мы подробно рассказали, как записывать макрос для автоматизации повторяющихся действий в Project.  Записанный макрос может работать превосходно, но что если возникла необходимость исправить его код? Редактируя макрос, можно дать ему дополнительную функциональность, например, убрать запрос о перезаписи файла, которой нельзя достичь при записи макроса. Код макроса хранится в VBA-модуле, а работа с кодом ведется в среде Visual Basic for Applications, которая называется Редактором VBA.

Как обычно, рассмотрим конкретный сценарий. Допустим, мы записали макрос, который создает снимок повторяющихся задач. Как бы он ни был удобен, нет предела совершенству, и этот макрос можно улучшить. При выполнении этого макроса нужно подтверждать перезапись существующего GIF-изображения. Поскольку цель макроса – создать изображение с самой актуальной информацией, устаревший файл всегда нужно перезаписывать. Для этого нужно изменить непосредственно код макроса.

Мы воспользуемся Редактором VBA для доработки и улучшения макроса, а затем выполним этот макрос.

1. Щелкнем по кнопке Макросы группы Макросы на вкладке Вид .

2. В списке Имя макроса выберем пункт Customizing B_Start.mpp!Создать_GIF_Снимок и щелкнем по кнопке Изменить .

Project загрузит содержащий макрос модуль в Редактор VBA.

3. Щелкнем в начале строки ViewApplyEx Name:=”&Диаграмма Ганта”,ApplyTo:=0 и нажмем клавишу ENTER.

4. Щелкнем по только что созданной строке, нажмем клавишу TAB и введем следующий код:

Application.Alerts False

Эта строка будет скрывать предупреждение при выполнении макроса и использовать значение по умолчанию – в нашем случае существующий GIF-файл будет перезаписан.

5. В строке, которая начинается с EditCopyPicture, выделим дату и время “06.04.2015 8:00” , которые идут следом за FromDate:= , и введем следующий код:

ActiveProject.ProjectStart

Этот VBA-код описывает дату начала активного проекта.

Эта команда при выполнении макроса определяет текущую дату начала активного проекта для создания GIF-файла.

6. В той же строке выделим дату и время “04.12.2015 17:00” , которые идут следом за ToDate:= , и введём следующий код:

ActiveProject.ProjectFinish

Эта команда определяет текущую дату окончания активного проекта для создания GIF-файла. Теперь, если дата начала и окончания плана проекта изменится, диапазон дат, используемый при создании GIF_изображения, будет скорректирован.

Далее мы добавим новые возможности в макрос.

7. Щелкнем в начале строки SelectTaskColumn и нажмем клавишу ENTER.

8. Щелкнем в новой строке, нажмем клавишу TAB и введём следующий код:

FilterApply Name:=”Незавершенные задачи”

Эта строка кода применит фильтр Незавершённые задачи к текущему представлению.

9. Щелкнем в начале строки ZoomTimescale Reset:=True и нажмем клавишу ENTER.

10. Щелкнем в новой строке, которую только что создали, нажмем клавишу TAB и введем следующий код:

FilterClear

Эта строка кода отменит фильтр Незавершенные задачи из текущего представления.

11. В меню Файл редактора VBA щелкнем Закрыть и вернуться в Microsoft Project.

Редактор VBA закроется, и мы вернемся к плану.

Мы могли бы воспроизвести обновленный макрос прямо сейчас, но сначала необходимо отметить некоторые фактические данные по задачам. Таким образом мы увидим, как макрос будет выполнять фильтрацию хода выполнения и изменять данные, которые должны быть отображены в изображении GIF.

12. Выберем название задачи 15, Вычитка и сборка оглавления .

13. Щелкнем по стрелке кнопки По графику группы Планирование на вкладке Задача и выберем пункт Обновить задачи в раскрывающемся списке.

Откроется диалоговое окно Обновление задач .

14. Введем 16д в поле Факт. Длительность и щелкнем ОК . Далее мы отметим часть выполненной работы по другой задаче.

15. Щёлкнем название задачи 16, Составление дефекторной ведомости .

16. Щелкнем по стрелке кнопки По графику группы Планирование на вкладке Задача и выберем пункт Обновить задачи в появившемся списке.

17. Введем в поле Факт.длительность и щелкнем ОК .

Теперь мы готовы выполнить макрос.

18. Щелкнем по кнопке Макрос группы Макросы на вкладке Вид .

19. В списке Имя макроса выберем пункт Customizing B.mpp!Создать_GIF_Снимок и щелкнем по кнопке Выполнить .

Макрос запустится, и в этот раз запрос на перезапись ранее сохраненного файла не появится. Чтобы убедиться, что макрос выполнится правильно, посмотрим обновлённый GIF-файл в программе для просмотра изображений.

20. Перейдем в папку с изображение в Проводнике и дважды щелкнем по файлу

Customizing A.gif, чтобы открыть его.

Обновленный снимок содержит новые даты начала и окончания и отображает только незавершенные задачи, поскольку макрос применил фильтр. Теперь, чтобы получить изображение с актуальной информацией, мы сможем выполнять макрос так часто, как это необходимо.