2015-08-25 3 views

ответ

1

Чтобы получить пользовательское имя поля вы будете нуждаться в постоянном поле и перебрать все поля, вам нужно хранить list of all field constants.

Вот простой пример, чтобы вы начали. Я жестко закодировал массив констант поля для полей 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 

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

  • Replace числовые значения с перечисленном константы (например pjTaskText1)
  • Хранить список полей во внешнем файле (например, csv-файл, который содержит имя поля, константу поля и т. д.)
  • Если ваш макрос хранится в файле проекта только для макроса, вы можете сохранить его в листе ресурсов и прокрутить их через цикл через ресурсы (см. Скриншот).

enter image description here

+0

Благодаря это прекрасно! Теперь есть способ, чтобы получить имя проекта по умолчанию для поля? Полагаю, я мог просто посмотреть имя поля в списке ID поля – David

+0

Ничего, я нашел решение! еще раз спасибо – David

Смежные вопросы