Цикл каждого поля для MS Project

Я пытаюсь перебрать каждое поле в моем файле MS Project и собрать информацию об этом поле (пользовательское имя является конкретным). Какой самый простой способ сделать это?

Спасибо

1 ответ

Решение

Чтобы получить произвольное имя поля, вам понадобится константа поля, а для циклического перебора всех полей вам необходимо сохранить список всех констант поля.

Вот простой пример для начала. Я жестко запрограммировал массив констант полей для полей Task Text1-30.

Sub GetCustomFieldNames()

    Dim TextFields As Variant
    TextFields = Array(188743731, 188743734, 188743737, 188743740, 188743743 _
        , 188743746, 188743747, 188743748, 188743749, 188743750, 188743997, 188743998 _
        , 188743999, 188744000, 188744001, 188744002, 188744003, 188744004, 188744005 _
        , 188744006, 188744007, 188744008, 188744009, 188744010, 188744011, 188744012 _
        , 188744013, 188744014, 188744015, 188744016)

    Dim FldID As Variant

    For Each FldID In TextFields
        If Len(CustomFieldGetName(FldID)) > 0 Then
            Debug.Print FieldConstantToFieldName(FldID), CustomFieldGetName(FldID)
        End If
    Next FldID

End Sub

Вот несколько способов улучшить это:

  • Замените числовые значения на перечисляемую константу (например, pjTaskText1)
  • Сохраните список полей во внешнем файле (например, CSV-файл, который содержит имя поля, константу поля и т. Д.)
  • Если ваш макрос хранится в файле проекта только для макросов, вы можете сохранить поля в листе ресурсов и циклически просматривать их, просматривая ресурсы (см. Снимок экрана).

введите описание изображения здесь

Другие вопросы по тегам