Excel의 표를 기반으로 PowerPoint에서 조직도를 만드는 프로젝트를 작성하려고합니다. 그래서 필자는 Employee와 Reports_to라는 두 개의 열이있는 Excel에서 간단한 테이블을 가지고 있습니다. 그Excel 기반 PowerPoint에서 조직도 만들기
Employee Reports_to
Joe Eva
Jane Ann
John Eva
Eva Olaf
Ann Olaf
Bill Ann
Gilbert Ann
Olaf
같은 뭔가 그 때 나는 어떤 상사에 대한 모든 부하 직원을 찾을 수있는 간단한 기능을 가지고 :
Function GetMinions(sMaster As String) As Collection
Dim rngEmp As Range, cl As Range
Dim collMinions As New Collection
With ThisWorkbook.Worksheets(1)
Set rngEmp = Range(.Range("A2"), .Range("A" & .Rows.Count).End(xlUp))
End With
For Each cl In rngEmp
If cl.Offset(, 1) = sMaster Then collMinions.Add cl.Value
Next cl
Set GetMinions = collMinions
End Function
나는 또한이 슬라이드에 하나 개의 슬라이드와 하나의 조직도 새로운 PowerPoint 프레젠테이션을 만드는 코드가 . 이 조직도에서 루트 노드를 제외한 모든 노드를 삭제합니다. 모든 것은 완벽하게 작동하므로 코드를 붙여 넣지는 않습니다. 그리고 여기 내 작업 말, 조직도를 작성하는 매크로가 있습니다.
PopulateOrgChart smr.Nodes(1), "Olaf"
을 그리고 그 결과는 다음과 같습니다 :
Sub PopulateOrgChart(nd As Object, str As String)
Dim Minions As Collection
Dim hasMinions As New Collection
Dim it As Object
Dim childNd As Object
Dim i As Integer
Set Minions = GetMinions(str)
For i = 1 To Minions.Count
Set childNd = nd.Nodes.Add
Debug.Print nd.Level & " " & childNd.Level
childNd.TextFrame2.TextRange.Text = Minions.item(i)
If GetMinions(Minions.item(i)).Count > 0 Then hasMinions.Add childNd
Next i
For i = 1 To hasMinions.Count
PopulateOrgChart hasMinions(i), hasMinions(i).TextFrame2.TextRange.Text
Next i
End Sub
나는 (SMR은의 SmartArt 개체를 정의) 인수와 함께이 매크로를 실행하고
당신이 볼 수 있듯이, 에바와 Ann은 모두 중급 관리자로서 올바른 위치에 있으며, 다른 모든 관리자는 3 번째 줄에서 정상인 관리자 바로 아래에 배치 된 Joe를 제외하고는 괜찮은 것으로 보입니다. 나는 무슨 일이 일어나고 있는지 알아 내려고 노력하고 자식 노드 설정 한 후이 라인에 놓여있다 :
Debug.Print nd.Level & " " & childNd.Level
내 직접 실행 창 내 조직 차트와 같은 이야기를 보여
1 2
1 2
2 2
2 3
2 3
2 3
2 3
추가 노드를 Eva의 첫 번째 부하 직원에게는 부모에게 동일한 수준의 권한을 부여합니다. 매크로가 다른 모든 직원에게 예상대로 작동하기 때문에 나는 매우 혼란 스럽습니다. 내가 뭘 잘못하고 어떻게 조를 루트에 있지 않고 에바 노드에 종속시킬 수 있습니까?