CREAR UN GENERADOR DE PROCESOS CON SMART ART Y VBA

Una de las tareas más comunes en cualquier organización o institución, sea pública o privada, es detectar y definir cada uno de los procesos que suceden en su seno.

No es una tarea sencilla, de hecho suele ser muy compleja y laboriosa. El objetivo de este post no es explicar cómo se hace esta tarea (que es inevitablemente un proceso teórico y manual), una labor de investigación.

Sin embargo, una vez detectadas las etapas de un proceso debemos detallarlas y pasarlas a un documento, esto lo podemos hacer o bien escribiendo un texto o bien incluir la información en un gráfico o una forma. Lo más habitual es abrir un PowerPoint y comenzar a escribir e insertar gráficos e ir rellenándolos.

Y para esa parte de la presentación de los datos es para la que este post resultará de interés y utilidad 🙂

Voy a utilizar un ejemplo para ilustrar el ejercicio (que no será un proceso organizacional), y he elegido las fases con las que cuenta el proceso de compra de una vivienda, la información la he obtenido de está web: El proceso de compra de una vivienda. Estas son las fases:

crear-generador-de-procesos

Ahora que tenemos cada una de las fases de compra ya podemos trabajar en nuestro código para generar nuestro gráfico de procesos.

Antes de mostrar el resultado, os dejo el código:

Sub GENERA_PROCESO()
Dim Diseño As SmartArtLayout
Dim Shape As Excel.Shape
Dim oNodos As SmartArtNodes
Dim i As Integer, Fin As Integer
Dim Cuenta As Integer
With Sheets("PROCESO1")
.Select
For Each Shape In .Shapes
Shape.Delete
Next
'Insertamos gráfico smartart
Set Diseño = Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2005/8/layout/bProcess3")
Set inserta = .Shapes.AddSmartArt(Diseño)
Set oNodos = inserta.SmartArt.AllNodes
Fin = Application.CountA(Sheets(1).Range("A:A"))
'Generamos los nodos necesarios para mostrar la información
Do While oNodos.Count < Fin
oNodos.Add.AddNode
Loop
'Incluimos la informacion de la hoja1 en cada uno de los nodos
For i = 2 To Fin
With oNodos(i)
.TextFrame2.TextRange.Text = Sheets(1).Range("A" & i) & " " & Sheets(1).Range("B" & i)
.Shapes.Item(1).TextEffect.FontBold = msoTrue
End With
Next
'Aplicamos un color definido
For Each Shape In .Shapes
Shape.SmartArt.Color = Application.SmartArtColors("urn:microsoft.com/office/officeart/2005/8/colors/accent1_1")
'eliminamos el Nodo 1, que se corresponde con la información del cabecero de la hoja1
oNodos(1).Delete
Next
'Ajustamos y eliminamos nodos vacíos
Cuenta = oNodos.Count
If Fin <= Cuenta Then
For i = Cuenta To Fin Step -1
oNodos(i).Delete
Next
End If
'Dimensionamos el gráfico
With .Shapes(1)
.Height = 270 'Alto
.Width = 620 'Ancho
End With
End With
End Sub

Una vez que hemos ejecutado el código, este es el resultado:

crear-generador-de-procesos1

Para dar estilos rápidos y colores, os dejo el siguiente post donde explico la forma de obtener los nombres e ID’s de los estilos: OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RÁPIDOS DE SMARTART PARA VBA

De esta forma tendremos una herramienta muy útil para generar gráficos (y podemos configurarla según nuestras preferencias).

* Válido para excel 2010, 2013 y 2016 (no funciona en versiones anteriores, dado que Smart Art todavía no se había implementado).

Descarga el archivo de ejemplo pulsando en: CREAR UN GENERADOR DE PROCESOS CON SMART ART Y VBA

 

Anuncios

¿Te ha gustado?. Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s