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?

3

7 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 
1

Have a look here:

Face ID's

Its an addin for MS excel. Works for excel 97 and later.

2

Modified 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 
1

I 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 
0

script 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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.