2016-12-27 55 views
0

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

I.E.打印出每个选项的作用? (名称,&查询它运行) 如果自定义菜单中有一个选项为“运行日报”和什么做的是运行查询qry_dly题为

那我就非常喜欢看,像这样 每天运行的VBA输出 - > qry_dly

回答

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