Usually i use construction like (vla-load (vla-get-menugroups (vlax-get-acad-object)) <MenuFile>) and after that something like this:
(foreach menugrp <MenuGroupsToLoad>
(vlax-for submenu (vla-get-menus
(vla-item (vla-get-menugroups (vlax-get-acad-object))
menugrp
) ;_ end of vla-item
) ;_ end of vla-get-menus
(vl-catch-all-apply
(function
(lambda ()
(vla-insertinmenubar
submenu
(1+ (vla-get-count (vla-get-menubar (vlax-get-acad-object))))
) ;_ end of vla-insertinmenubar
) ;_ end of lambda
) ;_ end of function
) ;_ end of vl-catch-all-apply
) ;_ end of vlax-for
) ;_ end of foreach
Works correct (tested on ACAD2009-2015)