martes, 9 de diciembre de 2014

VBA: Listar los iconos que corresponden a la propiedad FaceId.

Al respecto de la entrada anterior, veremos hoy cómo visualizar los diferentes Id de los iconos que podemos emplear en Excel...
En la imagen siguiente muestro sólo los 1000 primeros:



Insertamos y ejecutamos el siguiente procedimiento:

Sub MuestraLosFaceIDs()
Dim NewToolbar As CommandBar
Dim TopPos As Integer, LeftPos As Integer
Dim i As Integer, NumImgs As Integer

'Definimos las constantes que representa los Id de cada FaceId
'en este caso sólo del 1 al 100
Const IdInicio As Integer = 1
Const IdFinal As Integer = 100
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'Eliminamos Nuestra Barra personalizada.. si existiera
On Error Resume Next
Application.CommandBars("VistaFaceIds").Delete
On Error GoTo 0

'Limpiamos nuestra hoja de cálculo de imágenes
ActiveSheet.Pictures.Delete

Application.ScreenUpdating = False
'Incorporamos una Barra vacía
Set NewToolbar = Application.CommandBars.Add(Name:="VistaFaceIds")

'Posiciones de Inicio donde pegar los iconos..
TopPos = 5
LeftPos = 5
NumImgs = 0
    
'Recorremos los 100 iconos primeros...
For i = IdInicio To IdFinal
    On Error Resume Next
    NewToolbar.Controls(1).Delete
    With NewToolbar.Controls.Add(Type:=msoControlButton)
        .FaceId = i
        .CopyFace
    End With
    On Error GoTo 0
    
    NumImgs = NumImgs + 1
    ActiveSheet.Paste
    With ActiveSheet.Shapes(NumImgs)
        .Top = TopPos
        .Left = LeftPos
        'nombramos a la imagen con su número!!!
        .Name = "FaceID " & i
        .PictureFormat.TransparentBackground = True
        .PictureFormat.TransparencyColor = RGB(224, 223, 227)
    End With
    
' Actualizamos la posición de cada 'icono'
' en filas de 50 iconos...
   LeftPos = LeftPos + 16
    If NumImgs Mod 50 = 0 Then
        TopPos = TopPos + 16
        LeftPos = 5
    End If
Next i
Application.ScreenUpdating = True

ActiveWindow.RangeSelection.Select
'terminamos eliminando nuestra barra...
Application.CommandBars("VistaFaceIds").Delete
End Sub



Con este índice de iconos creado basta buscar el que más nos guste y seleccionarlo para ver cuál es su Id, por ejemplo el icono de Excel corresponde al Id número 263:

VBA: Listar los iconos que corresponden a la propiedad FaceId.

No hay comentarios:

Publicar un comentario en la entrada