Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 查看自定义菜单的信息_Vba_Ms Access_Ms Access 2003 - Fatal编程技术网

Vba 查看自定义菜单的信息

Vba 查看自定义菜单的信息,vba,ms-access,ms-access-2003,Vba,Ms Access,Ms Access 2003,在Access 2003中,创建了一个自定义菜单。如何使用VBA查看菜单的详细信息 即,打印每个选项的功能?(名称及其运行的查询(&U)) 如果自定义菜单有一个“每天运行”选项,并且该选项的作用是运行名为qry_ādly的查询 然后,我理想地希望看到VBA输出是这样的 每天运行-->qry_dly这可能需要一些调整,具体取决于菜单的结构。但是一旦你掌握了它的工作原理,你应该能够在需要的时候对它进行修改 首先,您需要找到自定义菜单的名称。如果你已经知道了,那么跳过这一步。否则,请获取从此返回的名称

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

即,打印每个选项的功能?(名称及其运行的查询(&U)) 如果自定义菜单有一个“每天运行”选项,并且该选项的作用是运行名为qry_ādly的查询

然后,我理想地希望看到VBA输出是这样的
每天运行-->qry_dly

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

首先,您需要找到自定义菜单的名称。如果你已经知道了,那么跳过这一步。否则,请获取从此返回的名称:

 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
Private子ReadMenuControls(ByVal strCmdBar作为字符串)
关于错误转到错误处理程序
将x、y调整为整数
作为对象的Dim子菜单
带命令栏(strCmdBar)
Debug.Print“Control Count Main:,.Controls.Count”
对于x=1到.Controls.Count
带.控件(x)
调试。打印x&“”
如果.Type=1,则“命令”按钮
调试。打印“按钮”、x、.Caption、.Type、.ID、.FaceId、.Style、.onaction
Else“If.Type=10然后”菜单
设置子菜单=命令栏(strCmdBar)。控件(x)
对于y=1,将其添加到SubMenu.Controls.Count
带.控件(y)
调试。打印“*按钮”、y、、标题、、类型、.ID、.FaceId、.Style、.onaction
以
下一个
如果结束
以
下一个
以
出口接头
错误处理程序:
如果错误号是438,那么
调试。打印“ReadMenuControl”,错误号,错误描述
如果结束
下一步继续
端接头