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 の [カスタム フィールド] ダイアログにあるすべてのラベルを詳細に読み返しました。LookupTable や OutlineCodes など、自分にとって意味のある用語について MSDN を調べました。ボタンを押し間違えた!以下のコードはこれを示しています。

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 に答える