2

我正在尝试在 EPM 环境中使用 MS Project 2010 以编程方式读取企业自定义字段中的可用项目列表。我正在自定义 Enterprise Global,因此我坚持使用 VBA。有些字段是文本字段,而有些则绑定到查找表(在 PWA 的服务器设置中)。

我可以使用以下方法读取每个字段的当前值:

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

但我无法获得 _MY_FIELD_NAME_ 可能具有的可用值列表,以防它绑定到查找表。

我找到了几个参考:

Application.CustomFieldValueListGetItem(FieldID,Item,Index)

但它们都不起作用。这是一个相当普遍的未回答问题。

我还没有找到解决方案;有人(请)吗?

感谢您的宝贵时间,欢迎任何帮助。

4

1 回答 1

3

我很高兴与大家分享我找到了我想要的东西!

我发布它是因为它可能对其他人有帮助。

所以我退后几步,详细阅读了 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

与MSDN中发布的相同问题。

佩德罗

于 2013-09-20T12:53:32.747 回答