Wenn ich die ID´s der vielen einzelnen Befehlsleiste-Steuerelemente in Excel bzw Word erfahren möchte, so kann ich anscheinend hierbei nicht auf die Hilfe unter F1 bauen, sonder muss angeblich eine Prozedur schreiben, die mir die entsprechenden ID´s auszugeben in der Lage ist.
Wenn ich dies mit der unten aufgeführten Prozedur probiere, so bekomme ich Laufzeitfehler 91, vermutlich weil die Objektvariable aBtn nicht mit einer Set-Anweisung zugewiesen ist.
Da ich diese Prozedur aber übernommen habe, habe ich keine Ahnung, welche Objektbezeichnung ich dieser Variablen zuweisen muss, damit das alles so funktioniert. Wer kann mir helfen ?
Gibt es vielleicht andere Wege, um ans Ziel zu kommen ?
Hier die Prozedur:
#Const cplrEnv = "Excel" 'Für die Verwendung in MS in "Word"
ändern.
Option Explicit
Sub ListAllCommandBarControls()
'Erzeugt ein Excel-Arbeitsblatt oder ein Word-Dokument mit
'einer Liste aller integrierten Befehlsleiste-Steuerelemente,
'deren Namen und ID-Nummern.
Const MaxItems = 4000
Dim Cmdbar as CommandBar
Dim aBtn As Object
Dim IDCount As Long
Set CmdBar = CommandBars.Add(Name:="Temporary", _
Position:=msoBarFloating, _
MenuBar:=False, _
temporary:=True)
On Error Resume Next
For IDCount = 1 To MaxItems
Application.StatusBar = "Addiere ID " & IDCount
CmdBar.Controls.Add ID:=IDCount
Next IDCount
On Error GoTo 0
#If cplrEnv = "Excel" Then
'Informationen in einem Excel-Arbeitsblatt ausgeben.
ActiveWorkbook.Sheets("Tabelle1").Activate
With ActiveSheet
.Cells(1, 1).Value = "ID"
.Cells(1, 2).Value = "Caption"
End With
IDCount = 1
For Each aBtn in CmdBar.Controls
Application.StatusBar = "Liste ID " & IDCount
With ActiveSheet
.Cells(IDCount + 1, 1).Value = aBtn.Id
.Cells(IDCount + 1, 2).Value = aBtn.Caption
End With
IDCount = IDCount + 1
Next aBtn
#End If
#If cplrEnv = "Word" Then
'Informationen in einem Word-Dokument anzeigen
With Selection
.WholeStory
.Delete
.TypeText Text:="ID" & vbTab & "Beschreibung"
.TypeParagraph
IDCount = 1
For Each aBtn In CmdBar.Controls
Application.StatusBar = "Liste ID " & IDCount
.TypeText Text:=aBtn.ID & vbTab & aBtn.Caption
.TypeParagraph
IDCount = IDCount + 1
Next aBtn
End With
#End If
CmdBar.Delete
#If cplrEnv = "Excel" Then
Application.StatusBar = False
#End If
End Sub
Vielen Dank für Eure Hilfe im Voraus
Gruß Lars