2016-12-27 25 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 
関連する問題