Anuncios

domingo, 12 de agosto de 2018

😱👉 Como Realizar un ORGANIGRAMA AUTOMATICAMENTE con una BASE de DATOS en Excel

Aprende a Realizar un organigrama automáticamente tomando la información de una base de datos en excel, el organigrama aplica para una empresa y es tipo vertical o jerarquía.

como hacer un organigrama automaticamente con base de datos de excel

¿Como hacer un organigrama automáticamente con una base de datos de Excel?


Con esta macro nos va permitir realizar lo siguiente: 


  • Realizar un organigrama de forma Vertical o Jerarquía.
  • Realizar un organigrama con detalle
  • Realizar un organigrama general.


Revisa el video para que aprendas a utilizar la macro y en la parte final del articulo se encuentra el enlace para que la puedas descargar.



Importante que para utilizar la macro debemos de tener habilitado el menú de programador o desarrollador dependiendo de la versión de excel que tengas. En este CORTO VIDEO te explico como puedes HABILITAR


Para poder ejecutar la macro antes debemos de tener la base de datos de una manera acorde y se debe tener presente lo siguiente.


Como se muestra en la imagen la información no debe tener encabezados y se debe organizar en la columna A el cargo, en la columna B la posición de jerarquía de 1 hasta el n número, mas adelante explico esta parte y en la columna C el nombre.


La posición de jerarquía por poner un ejemplo empresarial el gerente sería el número 1, posteriormente se debe de colocar todos los de una área por ejemplo el área financiera, entonces en la posición  2 sería el coordinador, posición 3 analista financiero y posición 4 auxiliar de cartera, es decir que el auxiliar de cartera depende del analista financiero y el analista financiero del coordinador, luego en el mismo departamento financiero tiene el analista de presupuesto entonces se coloca el número 3, luego sigue  el auxiliar facturación y le colocamos el número 4 y quiere decir que el auxiliar de facturación depende del analista de presupuesto y posteriormente al coordinador financiero y con esa misma lógica se debe de construir la base de datos imaginándonos un organigrama.


como hacer un organigrama automaticamente con base de datos de excel

Posteriormente nos dirigimos a la pestaña de programador o desorrallador y nos vamos para el icono de insertar y luego un botón


como hacer un organigrama automaticamente con base de datos de excel 

Podemos cambiar el nombre de la macro y le decimos nuevo

como hacer un organigrama automaticamente con base de datos de excel

Luego seleccionamos la macro 1 de bloc de notas que en la parte inferior se encuentra la macro y la pegamos en la ventana de visual basic.


como hacer un organigrama automaticamente con base de datos de excel

La primera macro consiste en


Nombrar las variables Diseño, borrar, NumCargos y Fin


Dim Diseño As SmartArtLayout
Dim Borrar As Excel.Shape
Dim NumCargos As SmartArtNodes
Dim i, Fin As Double



Con la hoja Organigrama aquí es muy importante cambiar el nombre de la hoja donde vas a utilizar la macro para el organigrama


With Sheets("Organigrama").Select



Si hay un organigrama en la hoja la borramos


For Each Borrar In .Shapes
Borrar.Delete


Next



Creamos el organigrama partiendo siempre de un tipo concreto: /NameandTitleOrganizationalChart (Tipo de organigrama)


Set Diseño = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart")


Set inserta = .Shapes.AddSmartArt(Diseño)
Set NumCargos = inserta.SmartArt.AllNodes


Se utiliza la función contar para saber el numero de cargos


Fin = Application.CountA(Sheets(1).Range("A:A")) 


Mientras el numero de cargos sea inferior a las unidades del organigrama Seguimos creando cargos


Do While NumCargos.Count < Fin
NumCargos.Add.Promote
Loop



El organigrama se inicia con 5 cargos, si el # cargos es inferior se eliminaran los nodos.


For i = 1 To Fin
Do While NumCargos(i).Level < Sheets(1).Range("B" & i).Value
NumCargos(i).Demote
Loop



Para introducir texto y formato de cada unidad/caja/elemento del organigrama


With NumCargos(i)
.TextFrame2.TextRange.Text = Sheets(1).Range("A" & i) 


El texto dentro de cada unidad es igual a la columna A + el contador


.TextFrame2.TextRange.Font.Size = 9 'Tamaño del texto de cada unidad
End With
Next


Cambiamos el diseño del organigrama Jerarquía


For Each Shape In .Shapes
Shape.SmartArt.Layout = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2005/8/layout/hierarchy1")


Aquí formateamos el color del organigrama a un estilo predefinido, puedes ensayar con cualquier número


Shape.SmartArt.Color = Application.SmartArtColors(4)


Aquí formateamos el estilo del organigrama a un estilo predefinido
Shape.SmartArt.QuickStyle = Application.SmartArtQuickStyles(4) 


Situamos el organigrama según necesidades y tamaño


With .Shapes(1)
.Height = 500 'Alto
.Width = 2500 'Ancho
.Top = 100 'Arriba
.Left = 50 'Izquierda
End With
Next
End With

                                             

y la MACRO # 2 para crear un organigrama general consiste en lo siguiente


Nombrar las variables Diseño, borrar, NumCargos y Fin


Dim Diseño As SmartArtLayout
Dim Borrar As Excel.Shape
Dim NumCargos As SmartArtNodes
Dim i, Fin As Double


Aquí debemos de cambiar el nombre de la hoja por el nombre donde estará el organigrama
With Sheets("Organigrama").Select

Borramos el organigrama si tenemos en una hoja
For Each Borrar In .Shapes
Borrar.Delete
Next

Creamos el organigrama partiendo siempre de un tipo concreto para este ejemplo es tipo de organigrama General: /NameandTitleOrganizationalChart

Set Diseño = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart")
Set inserta = .Shapes.AddSmartArt(Diseño)
Set NumCargos = inserta.SmartArt.AllNodes

Utilizamos la función contar para saber el número de cargos
Fin = Application.CountA(Sheets(1).Range("A:A")) 

Si el numero de cargos es inferior a 5 que es el numero predeterminado del organigrama se borraran

Do While NumCargos.Count < Fin
NumCargos.Add.Promote
Loop

For i = 1 To Fin
Do While NumCargos(i).Level < Sheets(1).Range("B" & i).Value
NumCargos(i).Demote
Loop

La siguiente parte es para introducir texto y formato de cada cargo en cada elemento del organigrama

With NumCargos(i)
.TextFrame2.TextRange.Text = Sheets(1).Range("A" & i) 

Asignar el tamaño del texto
.TextFrame2.TextRange.Font.Size = 9


Borramos el organigrama si tenemos en una hoja
For Each Borrar In .Shapes
Borrar.Delete
Next


Creamos el organigrama partiendo siempre de un tipo concreto para este ejemplo es tipo de organigrama General: /NameandTitleOrganizationalChart


Set Diseño = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart")
Set inserta = .Shapes.AddSmartArt(Diseño)
Set NumCargos = inserta.SmartArt.AllNodes


Utilizamos la función contar para saber el número de cargos
Fin = Application.CountA(Sheets(1).Range("A:A")) 


Si el numero de cargos es inferior a 5 que es el numero predeterminado del organigrama se borraran


Do While NumCargos.Count < Fin
NumCargos.Add.Promote
Loop


For i = 1 To Fin
Do While NumCargos(i).Level < Sheets(1).Range("B" & i).Value
NumCargos(i).Demote
Loop


La siguiente parte es para introducir texto y formato de cada cargo en cada elemento del organigrama


With NumCargos(i)
.TextFrame2.TextRange.Text = Sheets(1).Range("A" & i) 


Asignar el tamaño del texto
.TextFrame2.TextRange.Font.Size = 9


Asignar Color del texto de cada unidad, el color es el rojo
.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(139, 0, 0) 


'Asignar al texto negrita
.Shapes.Item(1).TextEffect.FontBold = msoTrue


Asignar color de fondo de cada unidad
.Shapes.Fill.ForeColor.RGB = vbWhite 


Asignar color del borde de cada unidad
.Shapes.Line.BackColor.RGB = vbBlack 
End With



Para escribir en la segunda caja de cada cargo en el organigrama, se asigna el tipo de letra, que el texto sea centrado y el tamaño de la letra


With NumCargos(i).Shapes.Item(2)
.TextFrame2.TextRange = Sheets(1).Range("C" & i)
.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(0, 0, 139) 
.TextEffect.Alignment = msoText
.TextEffect.FontSize = 10 'Tamaño de letra
End With
Next


For Each Shape In .Shapes
Shape.SmartArt.Layout = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart")




'Si deseamos un formato de color predeterminado, solo debemos quitar la comilla simple (') de la sentencia que sigue


'y elegir un formato (cambiando el número de referencia)


'Shape.SmartArt.Color = Application.SmartArtColors(7) '<-- aquí formateamos el color del organigrama a un estilo predefinido


Situamos el organigrama según necesidades y tamaño


With .Shapes(1)
.Height = 500 'Alto
.Width = 1800 'Ancho
.Top = 100 'Arriba
.Left = 50 'Izquierda
End With
Next
End With


En el siguiente ENLACE puedes DESCARGAR la macro #1 para organigrama de detalle en excel



En el siguiente ENLACE puedes DESCARGAR la macro #2 para organigrama general en excel




Seguramente quieres sabes más acerca de Excel, no te olvides darte una vuelta por las siguientes secciones disponibles para ti de manera gratuita: 


Canal de YouTube
Comunidad Telegram

Hasta una próxima y te deseo el mayor de los EXITOS.

Aprende y Enseña Excel.