25 septiembre, 2023

OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RÁPIDOS DE SMARTART PARA VBA

Hace unos meses escribí un post acerca de las grandes posibilidades que ofrece el uso de SmartArt en vba: GENERAR ORGANIGRAMA EN SMARTART CON VBA EN EXCEL

Sin embargo y dado que estoy trabajando actualmente con otra entrada relacionada con esta temática, creo que es necesario hacer un post sobre los nombres y los ID de los diseños, los colores y los estilos rápidos que solemos utilizar en SmarArt y que son fundamentales para realizar un buen trabajo.

En la macro del post de los organigramas veíamos varias líneas de código que hacían referencia por un lado al DISEÑO:

Application.SmartArtLayouts("urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart")

Por ejemplo, este hace referencia a un Organigrama con Título y Nombre, y hacemos referencia a su ID: "urn:microsoft.com/office/officeart/2008/layout/NameandTitleOrganizationalChart"

Pero también podríamos usar su código, que en Excel 2016 es el 89 y su nombre es Organigrama con Nombres y Puestos. Es decir que en Excel 2016 funcionaría perfectamente también así: Application.SmartArtLayouts(89)

Efectivamente, el ID siempre será el mismo en todas las versiones, mientras que el nombre (número clave) cambiará según versión. Por ese motivo siempre es más recomendable usar el ID que el nombre (a no ser que tengamos la certeza que todos los equipos en los que se ejecutará el código tengan la misma versión de Excel).

Con los colores y con los estilos rápidos sucede lo mismo, por ejemplo:

Colores:
Shape.SmartArt.Color = Application.SmartArtColors("urn:microsoft.com/office/officeart/2005/8/colors/accent0_1") 
y que podemos hacer referencia al nombre y en 2016 sería Contorno Oscuro 1 el 1, es decir: Shape.SmartArt.Color = Application.SmartArtColors(1)

Diseño Rápido:
Shape.SmartArt.QuickStyle = Application.SmartArtQuickStyles("urn:microsoft.com/office/officeart/2005/8/quickstyle/simple3") que se correspondería con el nombre Efecto Sutil código 1, y por lo tanto nos valdría poner: Shape.SmartArt.QuickStyle =Application.SmartArtQuickStyles(3)

Una vez comentado esto, os dejo una macro con la que podemos obtener tanto los nombres con los ID de cada uno de los elementos que hemos visto. De esta forma podréis obtener esta información para la versión con la que vayáis a trabajar. Este sería el código para los ID:

Sub SMARTART_ID()
Dim i As Double
With Sheets(2)
Fin = Application.CountA(.Range("A:A"))
If Fin > 0 Then Range("A1:C" & Fin).ClearContents
'Obtenemos los id de todos los diseños
Layaut = Application.SmartArtLayouts.Count
For i = 1 To Layaut
.Cells(1, 1) = "DISEÑO"
.Cells(i + 1, 1) = i & ": " & Application.SmartArtLayouts(i).ID
Next
'Obtenemos los ID de todos los colores
Colors = Application.SmartArtColors.Count
For i = 1 To Colors
.Cells(1, 2) = "COLORES"
.Cells(i + 1, 2) = i & ": " & Application.SmartArtColors(i).ID
Next
'Obtenemos el ID de todos los estilos rápidos
Styles = Application.SmartArtQuickStyles.Count
For i = 1 To Styles
.Cells(1, 3) = "ESTILOS RÁPIDOS"
.Cells(i + 1, 3) = i & ": " & Application.SmartArtQuickStyles(i).ID
Next
End With
End Sub

Para obtener los nombre solo es necesario sustituir la palabra .ID por .Name. De todas formas os dejo las dos macros en el archivo adjunto. Una vez que ejecutéis cada botón, se mostrará toda la información, en la pestaña 1 los Nombres (con su clave) y en la 2 los ID.

Listado con los ID:

OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RAPIDOS DE SMARTART PARA VBA

Listado con el código y el nombre:

OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RAPIDOS DE SMARTART PARA VBA1

Como siempre, espero que os sea de utilidad 🙂

Descarga el archivo de ejemplo pulsando en: OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RÁPIDOS DE SMARTART PARA VBA

Comparte este post

3 comentarios en «OBTENER NOMBRE E ID DE LOS DISEÑOS, COLORES Y ESTILOS RÁPIDOS DE SMARTART PARA VBA»

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies