2013-09-18 1 views
1

Я пытаюсь программно просмотреть список доступных элементов в Enterprise Custom Field, используя MS Project 2010 в ландшафте EPM. Я настраиваю Enterprise Global, поэтому я придерживаюсь VBA. Некоторые поля являются текстовыми полями, а некоторые связаны с таблицей поиска (в настройках сервера PWA).Чтение списка значений настраиваемого поля предприятия с помощью VBA

Я могу прочитать текущее значение каждого поля, используя:

?ActiveProject.ProjectSummaryTask.GetField(FieldNameToFieldConstant("_MY_FIELD_NAME_")) 

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

Я нашел несколько ссылок на:

Application.CustomFieldValueListGetItem(FieldID,Item,Index) 

Но ни один из них не работает. Это довольно распространенный вопрос без ответа.

Я пока не мог найти решение; есть кто (пожалуйста)?

Благодарим вас за внимание, любая помощь приветствуется.

ответ

2

Я рад сообщить, что нашел то, что искал!

Я отправляю его, поскольку он может помочь кому-то еще.

Итак, я сделал несколько шагов назад и подробно прочитал все метки в диалоговом окне «Пользовательские поля» в MS Proj. Я выкопал MSDN о тех терминах, которые имели для меня смысл, таких как LookupTable и OutlineCodes. Я нажал неправильную кнопку! Приведенный ниже код иллюстрирует это.

Sub TestGOC() 
'pfonseca Sep 2013 
'This Sub exhausts my Immediate Window. Run with caution (or dont run at all) 

    Exit Sub ' safety plug 
    For i = 1 To Application.GlobalOutlineCodes.Count 
    Debug.Print "GOC" & "(" & i & ")" & " " & Application.GlobalOutlineCodes(i).Name 
     For j = 1 To Application.GlobalOutlineCodes(i).LookupTable.Count 
      Debug.Print "..." & "(" & j & ")" & " " & Application.GlobalOutlineCodes(i).LookupTable(j).Name 
     Next j 
    Next i 

End Sub 

Функция ниже выдает допустимые значения на полученный CEF. Это отправная точка для более выработанных потребительных случаев:

Sub DumpListValues(pCEFName As String) 
'pfonseca Sep 2013 

    For i = 1 To Application.GlobalOutlineCodes.Count 
     If Application.GlobalOutlineCodes(i).Name = Trim(pCEFName) Then 
      For j = 1 To Application.GlobalOutlineCodes(i).LookupTable.Count 
       Debug.Print "(" & j & ")" & " " & Application.GlobalOutlineCodes(i).LookupTable(j).Name 
      Next j 
     End If 
    Next i 

End Sub 

Той же проблема, как posted in MSDN.

Pedro

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