I would like to create costum menu button using VBA in my excel 2010 file using predefined excel button that use face id. In my case i would like to use "lock" and "refresh" icon, but doesn`t know the face id for that icon. could anyone show or point me the list of button and face id used in excel 2010?
37 Answers
The following Sub BarOpen() works with Excel 2010, most probably also many other versions also, and generates in the Tab "Add-Ins" a custom, temporary toolbar with drop-downs to show the FaceIDs from 1 .. 5020 in groups of 30 items.
Option Explicit Const APP_NAME = "FaceIDs (Browser)" ' The number of icons to be displayed in a set. Const ICON_SET = 30 Sub BarOpen() Dim xBar As CommandBar Dim xBarPop As CommandBarPopup Dim bCreatedNew As Boolean Dim n As Integer, m As Integer Dim k As Integer On Error Resume Next ' Try to get a reference to the 'FaceID Browser' toolbar if it exists and delete it: Set xBar = CommandBars(APP_NAME) On Error GoTo 0 If Not xBar Is Nothing Then xBar.Delete Set xBar = Nothing End If Set xBar = CommandBars.Add(Name:=APP_NAME, Temporary:=True) ', Position:=msoBarLeft With xBar .Visible = True '.Width = 80 For k = 0 To 4 ' 5 dropdowns, each for about 1000 FaceIDs Set xBarPop = .Controls.Add(Type:=msoControlPopup) ', Before:=1 With xBarPop .BeginGroup = True If k = 0 Then .Caption = "Face IDs " & 1 + 1000 * k & " ... " Else .Caption = 1 + 1000 * k & " ... " End If n = 1 Do With .Controls.Add(Type:=msoControlPopup) '34 items * 30 items = 1020 faceIDs .Caption = 1000 * k + n & " ... " & 1000 * k + n + ICON_SET - 1 For m = 0 To ICON_SET - 1 With .Controls.Add(Type:=msoControlButton) ' .Caption = "ID=" & 1000 * k + n + m .FaceId = 1000 * k + n + m End With Next m End With n = n + ICON_SET Loop While n < 1000 ' or 1020, some overlapp End With Next k End With 'xBar End Sub 1Have a look here:
Its an addin for MS excel. Works for excel 97 and later.
2Modified previous answer to create numerous toolbars with sets of 10 icons. Can change code (comment/un-comment) number of toolbars (performance may be slow on slower machines)
The last icon number for Office 2013 that I could find was 25424 for OneDrive
Sub FaceIdsOutput() ' ================================================== ' FaceIdsOutput Macro ' ================================================== ' ========================= Dim sym_bar As CommandBar Dim cmd_bar As CommandBar ' ========================= Dim i_bar As Integer Dim n_bar_ammt As Integer Dim i_bar_start As Integer Dim i_bar_final As Integer ' ========================= Dim icon_ctrl As CommandBarControl ' ========================= Dim i_icon As Integer Dim n_icon_step As Integer Dim i_icon_start As Integer Dim i_icon_final As Integer ' ========================= n_icon_step = 10 ' ========================= i_bar_start = 1 n_bar_ammt = 500 ' i_bar_start = 501 ' n_bar_ammt = 1000 ' i_bar_start = 1001 ' n_bar_ammt = 1500 ' i_bar_start = 1501 ' n_bar_ammt = 2000 ' i_bar_start = 2001 ' n_bar_ammt = 2543 i_bar_final = i_bar_start + n_bar_ammt - 1 ' ========================= ' delete toolbars ' ========================= For Each cmd_bar In Application.CommandBars If InStr(cmd_bar.Name,"Symbol") <> 0 Then cmd_bar.Delete End If Next ' ========================= ' create toolbars ' ========================= For i_bar = i_bar_start To i_bar_final On Error Resume Next Set sym_bar = Application.CommandBars.Add _ ("Symbol" & i_bar, msoBarFloating, Temporary:=True) ' ========================= ' create buttons ' ========================= i_icon_start = (i_bar-1) * n_icon_step + 1 i_icon_final = i_icon_start + n_icon_step - 1 For i_icon = i_icon_start To i_icon_final Set icon_ctrl = sym_bar.Controls.Add(msoControlButton) icon_ctrl.FaceId = i_icon icon_ctrl.TooltipText = i_icon Debug.Print ("Symbol = " & i_icon) Next i_icon sym_bar.Visible = True Next i_bar End Sub Sub DeleteFaceIdsToolbar() ' ================================================== ' DeleteFaceIdsToolbar Macro ' ================================================== Dim cmd_bar As CommandBar For Each cmd_bar In Application.CommandBars If InStr(cmd_bar.Name,"Symbol") <> 0 Then cmd_bar.Delete End If Next End Sub 1I put together my own list of button face ID's. I used Excel VBA code to test all the toolface numbers up to 100,000. There were faces for ID numbers up to almost 34,000. Most of these had duplicates, which make them harder to look through. I compared all the faces to each other using a VBA arraylist, and only kept the first instance of each one. I think this file shows all the toolfaces with their numbers, but it only shows each one once:
short script writes ten (loop set for 10) FaceID's add. as entry into toolbar Tab "Add-In" and with "Benutzerdefinierte Symbolliste löschen" - you erase this add entry ( mark and right mouse click) - works with excel 2010/2013
Sub FaceIdsAusgeben() Dim symb As CommandBar Dim Icon As CommandBarControl Dim i As Integer On Error Resume Next Set symb = Application.CommandBars.Add _ ("Symbole", msoBarFloating) For i = 1 To 10 Set Icon = symb.Controls.Add(msoControlButton) Icon.FaceId = i Icon.TooltipText = i Debug.Print ("Symbole = " & i) Next i symb.Visible = True End Sub 0script provides on worksheet name of controls excel 2010/2013
Sub IDsErmitteln() Dim crtl As CommandBarControl Dim i As Integer Worksheets.Add On Error Resume Next i = 1 For Each crtl In Application.CommandBars(1).Controls(1).Controls Cells(i, 1).Value = crtl.Caption Cells(i, 2).Value = crtl.ID i = i + 1 Next crtl End Sub I found it in this location what i`m looking at
The table contain the Control and id (Face Id) used in excel. So for "Refresh" button the face id is 459, but it only work on the id less than 3 digit.
and this generator(by input start face id and end face id) then click show button faces, you get the list of icon on the range (to download it must login first)
and this for Ribbon Toolbar