2015-03-09 3 views
0

Я пытаюсь создать простое расписание из базы данных excel с помощью MS Project.VBA excel Назначение ресурсов для задачи в MS Project

Я столкнулся с несколькими ошибками во время выполнения, но мне не так много об этом, я просто хотел бы понять, как назначить ресурс, который я втянул в переменную для задачи. Я могу добавить ресурс в проект, но я не знаю, как назначить его для данной задачи. Вот что у меня есть:

Sub ExcelToProjectProto() 
Dim oPrjApp, oPrj As Object 
Set oPrjApp = MSProject.Application 
Dim strJobName, strForeman, strCrane, strLocation, strPieces As String 
Dim dStart, dEnd As Date 
Dim lRow, lCol, lRevenue As Long 
Dim rsCrane, rsForeman As Resource 

oPrjApp.Visible = True 
Set oPrj = oPrjApp.Projects.Add 
oPrj.Title = "Test" 

For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row 
'pulling data from excel 
    strJobName = Cells(lRow, 1).Value 
    strCrane = Cells(lRow, 2).Value 
    strForeman = Cells(lRow, 3).Value 
    dStart = Cells(lRow, 4).Value 
    dEnd = Cells(lRow, 6).Value 
    lRevenue = Cells(lRow, 8).Value 
    strPieces = Cells(lRow, 9).Value 
    strLocation = Cells(lRow, 10).Value 

    oPrj.Tasks.Add.Name = strJobName & "- " & strLocation & " (" & strPieces & " ea)" 
    oPrj.Tasks(lRow - 1).Start = dStart 
    oPrj.Tasks(lRow - 1).Finish = dEnd 
    If Not ExistsInCollection(oPrj.Resources, strCrane) Then oPrj.Resources.Add.Name = strCrane 
    If Not ExistsInCollection(oPrj.Resources, strForeman) Then oPrj.Resources.Add.Name = strForeman 
    'Set rsCrane = oPrj.Resources(strCrane)  ''trying to setup the resources, I get an error here 
    'Set rsForeman = oPrj.Resources(strForeman) '' same thing as above line. 

'trying to assign a resource 

    'oPrj.Tasks(lRow - 1).Assignments.ResourceName.Add strCrane 
    'oPrj.Tasks(lRow - 1).Assignments.ResourceName.Add strForeman 

Next 

Set oPrjApp = Nothing 
Set oPrj = Nothing 

End Sub 

ответ

0

Ну, я нашел способ как.

Это, безусловно, разве лучший способ, но после того, как я добавил ресурсы в этих строках:

Я тогда в цикле через все ресурсы, я добавил и совпасть текущие из них и установить их к rsCrane и rsForeman свойств соответственно:

For i = 1 To 100 
    If oPrj.Resources(i).Name = strCrane Then 
     Set rsCrane = oPrj.Resources(i) 
     Exit For 
    End If 
Next i 
For i = 1 To 100 
    If oPrj.Resources(i).Name = strForeman Then 
     Set rsForeman = oPrj.Resources(i) 
     Exit For 
    End If 
Next i 

Затем я использую следующую команду, чтобы назначить:

rsCrane.Assignments.Add TaskID:=(lRow - 1) 
rsForeman.Assignments.Add TaskID:=(lRow - 1) 
Смежные вопросы