2011-08-18 11 views
0

タスクの数が2つのシンプルなMSプロジェクトファイル(2007)があります。 VBATestというカスタムフィールドを作成し、このカスタムフィールドに2つのプロジェクトタスクに対して値を割り当てました。MS Project 2007 VBAでタスクとカスタムフィールドを取得する

私はプロジェクトタスクのリストとこのようなカスタムフィールドに割り当てられた値のリストを取得したいと思います。

ProjectTask | VBATest <--Custom field 
------------|-------- 
Task1  | vba1 
Task2  | vba2 

私はAccess 2007 VBAからこれをやっています。最終的なコードがこれで終わるところです。 ほとんどの機能は動作しますが、Assignmentsオブジェクトからカスタムフィールド値を読み取ることができません。あなたはなにか考えはありますか? ありがとう

ここまでは私がこれまで行ってきたことです。

Sub LoadProjectFile() 

Dim pjApp As MSProject.Application 
Dim FileToOpen 
Dim Proj As MSProject.Project 
Dim Project_Task As Task 
Dim fd As FileDialog 

Set pjApp = New MSProject.Application 

If pjApp Is Nothing Then 
MsgBox "Project is not installed" 
End 
End If 

pjApp.Visible = True 
AppActivate "Microsoft Project" 

Set fd = Application.FileDialog(msoFileDialogFilePicker) 
fd.Filters.Clear 
fd.Filters.Add "Microsoft Project Files", "*.mpp" 
fd.AllowMultiSelect = False 
fd.Show 
If (fd.SelectedItems.Count = 0) Then 
    'Application.GetOpenFilename("Microsoft Project Files (*.mpp), *.mpp") 
    pjApp.Quit 
    Set pjApp = Nothing 
    Exit Sub 
End If 

pjApp.FileOpen fd.SelectedItems(1) 
Debug.Print "Project_Task_Name~CustomField" 

Dim ass As Assignment 
For Each Project_Task In pjApp.ActiveProject.Tasks 
      If Not Project_Task Is Nothing Then 

       For Each ass In Project_Task.Assignments 
        assignCFVal = assignCFVal & "," & ass.VBATestField '<<PROBLEM Line 
       Next ass 

       Debug.Print Project_Task.Name & "~" & assignCFVal 
       assignCFVal = "" 
      End If 
     Next Project_Task 

pjApp.FileClose pjDoNotSave 
pjApp.Quit 
Set pjApp = Nothing 

End Sub 

答えて

0

私はこのためにAssignmentsオブジェクトを使用する必要はありません。 SetFieldメソッドは私が以下のように必要なものを返します。

For Each Project_Task In pjApp.ActiveProject.Tasks 
      If Not Project_Task Is Nothing Then 
       assignCFVal = Project_Task.SetField(FieldNameToFieldConstant("VBATestField")) 
       Debug.Print Project_Task.Name & "~" & assignCFVal 
      End If 
Next Project_Task 
関連する問題