Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA excel为MS Project中的任务分配资源_Excel_Ms Project_Vba - Fatal编程技术网

VBA excel为MS Project中的任务分配资源

VBA excel为MS Project中的任务分配资源,excel,ms-project,vba,Excel,Ms Project,Vba,我正试图用MS Project从excel“数据库”构建一个简单的时间表 我遇到了多个运行时错误,但我不太关心这一点,我只想了解如何将我拉入变量的资源分配给任务。我可以将资源添加到项目中,但我不知道如何将其分配给给定的任务。以下是我所拥有的: Sub ExcelToProjectProto() Dim oPrjApp, oPrj As Object Set oPrjApp = MSProject.Application Dim strJobName, strForeman, strCrane,

我正试图用MS Project从excel“数据库”构建一个简单的时间表

我遇到了多个运行时错误,但我不太关心这一点,我只想了解如何将我拉入变量的资源分配给任务。我可以将资源添加到项目中,但我不知道如何将其分配给给定的任务。以下是我所拥有的:

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

我找到了一个方法

这肯定不是最好的方法,但在我添加了以下行中的资源之后:

If Not ExistsInCollection(oPrj.Resources, strCrane) Then oPrj.Resources.Add.Name = strCrane
If Not ExistsInCollection(oPrj.Resources, strForeman) Then oPrj.Resources.Add.Name = strForeman
然后,我必须循环使用我添加的所有资源,并匹配当前资源,并将它们分别设置为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)