在office 2007(含)版本以前,office的界面都是菜单形式的。
各种命令组合在一起组成了特定的菜单栏、工具栏。
虽然office 2007(含)版本以后,菜单栏被功能区替代,但是内置的菜单命令依然存在,而且功能区中的命令仍然使用的是之前的菜单命令。
如果要获取所有的office软件的内置菜单命令,可以遍历CommandBars 集合对象,访问所有的CommandBar对象,获取其中的所有菜单命令CommandBarControl。
基于上述知识,如果要在word文档中列出word应用程序中所有的内置菜单栏、工具栏的名称以及对应的菜单命令,可以使用以下的代码:
Sub QQ1722187970() Dim oDoc As Document Set oDoc = Word.ActiveDocument Dim oCB As CommandBar Dim oCBC As CommandBarControl Dim oT As Table Dim arr() K = 1 For Each oCB In Word.Application.CommandBars For Each oCBC In oCB.Controls '此处没有列举弹出式的菜单 ReDim Preserve arr(1 To 6, 1 To K) arr(1, K) = oCB.Name arr(2, K) = oCB.NameLocal arr(3, K) = oCBC.Caption arr(4, K) = oCBC.ID arr(5, K) = oCBC.Type arr(6, K) = oCBC.DescriptionText K = K + 1 Next Next With oDoc For Each oT In .Tables oT.Delete Next Set oT = .Tables.Add(.Range, K, 6) With oT .Style = "网格型" .Cell(1, 1).Range.Text = "命令栏名称" .Cell(1, 2).Range.Text = "命令栏中文名称" .Cell(1, 3).Range.Text = "命令按钮的名称" .Cell(1, 4).Range.Text = "命令按钮的id" .Cell(1, 5).Range.Text = "命令按钮的类型" .Cell(1, 6).Range.Text = "命令按钮的描述" For j = 1 To 6 For i = 1 To K - 1 .Cell(i + 1, j).Range.Text = arr(j, i) Next i Next j End With End With Set oT = Nothing Set oDoc = Nothing End Sub
结果如下图所示:
从上图可以看出,我们可以用vba代码将所有的word内置菜单的命令列举出来,同时可以看到每个菜单命令对应的说明,从而方便快速地找到要的菜单命令。
发表评论