查看自定义菜单信息

时间:2016-12-27 20:08:08

标签: vba access-vba access ms-access-2003

在Access 2003中,创建了一个自定义菜单。如何使用VBA查看菜单的详细信息?

即。得到每个选项的打印输出? (名称和&查询运行) 如果自定义菜单有“每日运行”选项,那么运行查询标题为qry_dly

然后我理想地希望看到VBA输出如此 每日运行 - > qry_dly

1 个答案:

答案 0 :(得分:0)

这可能需要一些调整,具体取决于菜单的结构。但是一旦掌握了它的工作原理,你就应该能够根据需要对其进行更改。

首先,您需要找到“自定义”菜单的名称。如果你已经知道,那么跳过这一步。否则抓住从这里返回的名字:

 Dim x As Integer
 For x = 1 To CommandBars.Count
    If CommandBars(x).BuiltIn = False Then
      Debug.Print x, CommandBars(x).Name, CommandBars(x).BuiltIn
   End If
 Next x

然后,将自定义菜单的名称传递给此过程。就像我说的,根据菜单的设置方式,这可能会也可能不会返回其中的所有内容,这是您可能需要自定义的地方:

Private Sub ReadMenuControls(ByVal strCmdBar As String)

On Error GoTo errhandler

Dim x, y As Integer

Dim SubMenu As Object

 With CommandBars(strCmdBar)
  Debug.Print "Control Count Main: ", .Controls.Count

      For x = 1 To .Controls.Count
            With .Controls(x)
            Debug.Print x & " <== " & .Caption & " ==>"
                    If .Type = 1 Then 'Command Button

                         Debug.Print "Button", x, .Caption, .Type, .ID, .FaceId, .Style, .onaction

                    Else 'If .Type = 10 Then  'Menu

                        Set SubMenu = CommandBars(strCmdBar).Controls(x)

                        For y = 1 To SubMenu.Controls.Count
                              With .Controls(y)
                                 Debug.Print "  * Button", y, .Caption, .Type, .ID, .FaceId, .Style, .onaction
                              End With
                        Next
                   End If
            End With
      Next

 End With

Exit Sub

errhandler:
 If Err.Number <> 438 Then
  Debug.Print "ReadMenuControls", Err.Number, Err.description
 End If
 Resume Next
End Sub