gpt4 book ai didi

excel - VBA 将 excel 前身数据导出到 MS Project

转载 作者:行者123 更新时间:2023-12-04 20:21:18 25 4
gpt4 key购买 nike

目前我的 excel 中有 4 列,即(ID 列可以忽略)


ID
任务名称
资源名称
前辈


1
任务1
员工1
2

2
子任务1
员工2

3
任务2
员工1
4,5

4
子任务2
员工2

5
子任务3
员工2



我希望在我的 Excel 中创建一个宏按钮,以将内容直接导出到 MS Project 中。我只能在网络上找到有关仅传输任务的共享。有人可以帮助我吗?真的很感激。
我现有的代码(归功于#madschedules),其中仅包含任务。

Sub createNewMSPFromExcelData()

' First go turn on the MS Project reference library

' Declare variables
Dim pjApp As MSProject.Application
Dim pjProject As MSProject.Project
Dim pjtasklist As MSProject.Tasks
Dim pjtask As MSProject.Task
'Dim pjpredlist As MSProject.TaskDependencies
'Dim pjpredlist As TaskDependencies
Dim pjpred As TaskDependency
Dim xlrange As Range
Dim xlrow As Long
Dim counter As Integer

'open MS Project application
Set pjApp = New MSProject.Application
pjApp.Visible = True

' Add a new project file
Set pjProject = pjApp.Projects.Add
Set pjtasklist = pjProject.Tasks


'Loop through all the Excel Data in the worksheet
counter = 2
Do Until Cells(counter, 1) = ""
Debug.Print Cells(counter, 1).Value & " " & Cells(counter, 2).Value & " " & Cells(counter, 3).Value

' Add new task into MS Project from Excel Value
pjtasklist.Add (Cells(counter, 2).Value)
pjpred.Add (Cells(counter, 3).Value)

counter = counter + 1
Loop

MsgBox ("There are " & pjtasklist.Count & vbNewLine & _
" tasks in our new project")

End Sub
expected data in MS Project image
为了回答前辈,我目前正在做一个涉及多层次的电子原理图设计项目。因此,要在层次结构上工作,我需要确保在进行下一个层次之前完成子层次结构的事件,因此我将前辈的详细信息从原理图导出到 Excel 中。

最佳答案

添加任务然后设置任务属性的关键是在添加任务对象后获取对它的引用。所以而不是:

pjtasklist.Add (Cells(counter, 2).Value)
Set pjtask = pjtasklist.Add (Cells(counter, 2).Value)
pjtask.ResourceNames = Cells(counter, 3).Value
然而,在进一步讨论之前,需要明确任务、子任务和前任。在调度中,子任务被认为是摘要任务下的任务。摘要任务用于对项目任务的相关子集进行分组。摘要任务的开始和结束日期是根据其子任务的最早开始和最晚结束计算的。
前身是必须在另一个任务开始之前发生的任务。以前的任务几乎总是应该首先输入,以便时间表按时间顺序读取。因此,很少会看到一个任务的前任 ID 值高于它自己的值。相反,如果 OL = OutlineLevel,Excel 表会更好:


ID
任务名称
资源名称
前辈
OL


1
任务1
员工1

1

2
子任务1
员工2

2

3
任务2
员工1

1

4
子任务2
员工2

2

5
子任务3
员工2
4
2


这产生了典型的调度结构,如下所示:
sample schedule
最后,这里是将上面的表格变成时间表的代码:
Sub createNewMSPFromExcelData()

Dim pjApp As MSProject.Application
Dim pjProject As MSProject.Project
Dim pjtasklist As MSProject.Tasks
Dim pjtask As MSProject.Task
Dim counter As Integer

Set pjApp = New MSProject.Application
pjApp.Visible = True

Set pjProject = pjApp.Projects.Add
Set pjtasklist = pjProject.Tasks

counter = 2
Do Until Cells(counter, 1) = ""

Set pjtask = pjtasklist.Add(Cells(counter, 2).Value)
pjtask.ResourceNames = Cells(counter, 3).Value
pjtask.Predecessors = Cells(counter, 4).Value
pjtask.OutlineLevel = Cells(counter, 5).Value

counter = counter + 1
Loop

MsgBox ("There are " & pjtasklist.Count & vbNewLine & _
" tasks in our new project")

End Sub

关于excel - VBA 将 excel 前身数据导出到 MS Project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71899886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com