Yes, You can.
Here is an example, how to add custom menu.
Function CreteCustomMenu()
Dim cb As CommandBar
Dim ctr As CommandBarControl, ctr_1 As CommandBarControl
DelCustomMenu
Set cb = CommandBars.Add(Name:="ASDFG",
Position:=msoBarTop) 'normal mode
'Set cb = CommandBars.Add(Name:="ASDFG",
Position:=msoBarTop, MenuBar:=True) 'to overide menu
'Set cb = CommandBars.Add(Name:="ASDFG",
Position:=msoBarTop, MenuBar:=True, Temporary:=True) 'to
overide menu and delete on close application
Set ctr = cb.Controls.Add(Type:=msoControlPopup)
With ctr
.Caption = "New..."
Set ctr_1 = .Controls.Add(Type:=msoControlButton)
With ctr_1
.Caption = "Client"
.FaceId = 354
.OnAction = "New_Client"
End With
Set ctr_1 = .Controls.Add(Type:=msoControlButton)
With ctr_1
.Caption = "Invoice"
.FaceId = 322
.OnAction = "New_Invoice"
End With
End With
Set ctr = cb.Controls.Add(Type:=msoControlPopup)
With ctr
.Caption = "Edit..."
Set ctr_1 = .Controls.Add(Type:=msoControlButton)
With ctr_1
.Caption = "Client"
.FaceId = 361
.OnAction = "Edit_Client"
End With
Set ctr_1 = .Controls.Add(Type:=msoControlButton)
With ctr_1
.Caption = "Invoice"
.FaceId = 363
.OnAction = "Edit_Invoice"
End With
End With
Set ctr = cb.Controls.Add(Type:=msoControlButton)
With ctr
.BeginGroup = True
.Caption = "End"
.FaceId = 106
.OnAction = "Close_App"
End With
cb.Visible = True
Set cb = Nothing
Set cb = Nothing
End Function
Sub DelCustomMenu()
On Error Resume Next
CommandBars("ASDFG").Delete
End Sub
Sub New_Client()
On Error Resume Next
DoCmd.OpenForm "Client", , , , acFormAdd
End Sub
Sub Edit_Client()
On Error Resume Next
DoCmd.OpenForm "Client", , , , acFormEdit
End Sub
Sub New_Invoice()
On Error Resume Next
DoCmd.OpenForm "Invoice", , , , acFormAdd
End Sub
Sub Edit_Invoice()
On Error Resume Next
DoCmd.OpenForm "Invoice", , , , acFormEdit
End Sub