1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Sub TypeMSO()
Dim Ctrl As CommandBarControl
Dim cpt&
Dim h&
Dim i&
Dim T()
Dim S As Worksheet
Dim R As Range
Dim MsoTypes As Variant
Dim MsoNames As Variant
Dim Titres As Variant
'---
MsoTypes = Array(22, 26, 1, 5, 12, 4, 0, 3, 2, 16, 19, 8, 20, _
9, 11, 18, 15, 24, 7, 21, 10, 23, 14, 13, 6, 17, 25)
MsoNames = Array("msoControlActiveX", "msoControlAutoCompleteCombo", "msoControlButton", "msoControlButtonDropdown", _
"msoControlButtonPopup", "msoControlComboBox", "msoControlCustom", "msoControlDropdown", "msoControlEdit", _
"msoControlExpandingGrid", "msoControlGauge", "msoControlGenericDropdown", "msoControlGraphicCombo", _
"msoControlGraphicDropdown", "msoControlGraphicPopup", "msoControlGrid", "msoControlLabel", "msoControlLabelEx", _
"msoControlOCXDropdown", "msoControlPane", "msoControlPopup", "msoControlSpinner", "msoControlSplitButtonMRUPopup", _
"msoControlSplitButtonPopup", "msoControlSplitDropdown", "msoControlSplitExpandingGrid", "msoControlWorkPane")
Titres = Array("ID", "Name", "Description", "Type", "MsoControlType")
'--- Des propriétés CommandBarControl ---
For i& = 1 To 3000
Set Ctrl = Application.CommandBars.FindControl(ID:=i&)
If Not Ctrl Is Nothing Then
cpt& = cpt& + 1
ReDim Preserve T(1 To 5, 1 To cpt&)
T(1, cpt&) = Ctrl.ID
T(2, cpt&) = Ctrl.accName
T(3, cpt&) = Ctrl.accDescription
T(4, cpt&) = Ctrl.Type
For h& = LBound(MsoTypes) To UBound(MsoTypes)
If Ctrl.Type = MsoTypes(h&) Then
T(5, cpt&) = MsoNames(h&)
Exit For
End If
Next h&
End If
Next i&
'--- Inscription des résultats dans une nouvelle feuille ---
Sheets.Add after:=Sheets(Sheets.Count)
Set S = ActiveSheet
Set R = S.Range(S.Cells(2, 1), S.Cells(UBound(T, 2) + 1, UBound(T, 1)))
R = Application.WorksheetFunction.Transpose(T)
'--- Titres des colonnes ---
Set R = S.Range("a1:e1")
R = Titres
R.Font.Bold = True
End Sub |
Partager