在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内置菜单的命令列举出来,同时可以看到每个菜单命令对应的说明,从而方便快速地找到要的菜单命令。


发表评论