2011-08-18 3 views
0

몇 가지 작업만으로 구성된 간단한 MS Project 파일 (2007)이 있습니다. 또한 VBATest이라는 사용자 정의 필드를 만들고 두 개의 프로젝트 작업에 대해이 사용자 정의 필드에 값을 할당했습니다.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 
관련 문제