VBA-将Excel数据导入MS Project

VBA-将Excel数据导入MS Project,excel,vba,ms-project,Excel,Vba,Ms Project,我正试图从Excel中获取一个数据表,并将其导入MS Project 以下是我在Excel中的屏幕截图: CC:Excel列标题表:WBS、任务名称、开始日期、完成日期、持续时间、工时和资源名称,以及独立于资源名称分配的数据行 以下是我正在寻找的VBA代码的屏幕截图,该代码可以从Excel生成到MS Project: CC:MS项目文件,显示WBS列、任务名称、开始日期、完成日期、持续时间、工时和资源名称,资源名称按WBS分组 我尝试过复制和粘贴,但VBA肯定有更好的选择(我希望?) 如果有

我正试图从Excel中获取一个数据表,并将其导入MS Project

以下是我在Excel中的屏幕截图:

CC:Excel列标题表:WBS、任务名称、开始日期、完成日期、持续时间、工时和资源名称,以及独立于资源名称分配的数据行

以下是我正在寻找的VBA代码的屏幕截图,该代码可以从Excel生成到MS Project:

CC:MS项目文件,显示WBS列、任务名称、开始日期、完成日期、持续时间、工时和资源名称,资源名称按WBS分组

我尝试过复制和粘贴,但VBA肯定有更好的选择(我希望?)

如果有问题,我很乐意回答

我真的很感激任何人能给我的帮助

编辑: 以下是我现在拥有的VBA:

Sub ExceltoProject()
Dim pjapp As Object
Dim strValue, strStartDate, strEndDate, Strresource As String
Dim newproj
Set pjapp = CreateObject("MSProject.Application")
If pjapp Is Nothing Then
MsgBox "Project is not installed"
Exit Sub
End If
pjapp.Visible = True

Set newproj = pjapp.Projects.Add
newproj.Title = "ExcelExtract"
Set ActiveProject = newproj
For i = 2 To 4

strWBS = Worksheets("LABOR_IMS_INPUT").Range("A" & i)
strTaskName = Worksheets("LABOR_IMS_INPUT").Range("B" & i)
strStartDate = Worksheets("LABOR_IMS_INPUT").Range("C" & i)
strEndDate = Worksheets("LABOR_IMS_INPUT").Range("D" & i)
strDuration = Worksheets("LABOR_IMS_INPUT").Range("E" & i)
Strresource = Worksheets("LABOR_IMS_INPUT").Range("F" & i)
strWork = Worksheets("LABOR_IMS_INPUT").Range("G" & i)

newproj.Tasks.Add (strValue & " " & Strresource)
newproj.Resources.Add.Name = Strresource
newproj.Tasks(i - 1).ResourceNames = Strresource
Next i
End Sub

Public Function ExistsInCollection(pColl, ByVal pKey As String) As Boolean
On Error GoTo NoSuchKey
If VarType(pColl.Item(pKey)) = vbObject Then
' force an error condition if key does not exist
End If
ExistsInCollection = True
Exit Function

NoSuchKey:
ExistsInCollection = False
End Function
但我得到的是:

你知道发生了什么吗。我做错了


抱歉之前的问题与清晰度,我是视力受损,并试图代码

此代码将从Excel工作表中获取数据,以创建新的项目计划。无需同时设置完成和持续时间字段,因为完成日期将由开始日期和持续时间确定

Sub ExceltoProject()
Dim pjapp As Object
Dim newproj As Object

Set pjapp = CreateObject("MSProject.Application")
If pjapp Is Nothing Then
    MsgBox "Project is not installed"
    Exit Sub
End If
pjapp.Visible = True

Set newproj = pjapp.Projects.Add
newproj.Title = "ExcelExtract"

Dim wst As Worksheet
Set wst = ThisWorkbook.Worksheets("LABOR_IMS_INPUT")

Dim i As Long
For i = 2 To 4
    newproj.Tasks.Add
    newproj.Tasks(i - 1).Name = wst.Cells(i, 2)
    newproj.Tasks(i - 1).WBS = wst.Cells(i, 1)
    newproj.Tasks(i - 1).Start = CDate(wst.Cells(i, 3))
    newproj.Tasks(i - 1).Duration = wst.Cells(i, 5) & "d"
    newproj.Tasks(i - 1).ResourceNames = wst.Cells(i, 7)
    newproj.Tasks(i - 1).Work = wst.Cells(i, 6) & "h"
Next i

End Sub

如果您真正需要做的只是将数据从Excel中获取到Project中,那么在合并Excel中的行后,“复制粘贴”就可以正常工作,这样每个任务就只有一行(例如,合并资源)。这可以用VBA实现,从Excel自动化项目,或者从Excel自动化项目。rachel,谢谢你的评论,我有一些东西可以从Project中获取数据到Excel,我正在努力开发VBA,可以从Excel中获取数据并将其放入Project中。展示你拥有的内容,并就代码不起作用的地方提出具体问题。这就是stackoverflow的意义所在——获取有关特定问题的帮助。这不是一个真正的请为我写整个程序的网站。嘿,瑞秋,谢谢你的评论。真的很有帮助,老实说。我是新来的,所以如果我生疏了,我向你道歉。我编辑了上面的内容,希望能更好地解释这一点。让我知道你是不是在找对不起,我按回车键太快了。我道歉。嗨,瑞秋。非常感谢你这么做。我得到了一个“运行时错误'1101',当我运行调试时,它会突出显示:“newproj.Tasks(i-1).Start=CDate(wst.Cells(i,3))”我试图查看它在哪里拉并对解决方案进行故障排除。只是给你一个更新。