设置一个CommandBar“ Popup”子菜单图标动态

我只想确认这一点:在Office 2003中,我想创建一个自定义子菜单 - 在运行时,CommandBar用作弹出窗口(msoControlPopup)的用法,并为其设置图像。使用CommandBarButton,这非常简单
Set btn1 = mnu.Controls.Add(msoControlButton, temporary:=True)
btn1.Caption = "Btn1"
btn1.Picture = stdole.LoadPicture("C:temptest.bmp")
但是使用类型为msoControlPopup的CommandBarPopup或CommandBarControl,它会失败
Set sub1 = mnu.Controls.Add(msoControlPopup, temporary:=True)
sub1.Caption = "Sub1"
    'object doesn't support this property or method for next line
sub1.Picture = stdole.LoadPicture("C:temptest.bmp")
msoControlPopup类型似乎也不允许使用
.Style
属性,这就是Office在控件上确定要显示的内容(图标,文本,两者)的方式。我还没有发现这个证明,所以我最后希望我做错了,事实上,有一种方法可以在运行时在子菜单上插入一个图标。 感谢您可以放下任何光线。     
已邀请:
好吧更多的风滚草。我很确定答案是,它无法完成。这里是我的“证明”:内置子菜单都没有图标(我在上面发布之后才知道,如果运行上面的代码,请转到菜单栏中的工具>自定义,然后单击在Test菜单上将其删除,然后右键单击Sub1,您应该看到所有按钮和样式选项显示为灰色。右键单击Btn1,它们可用。 任何其他想法仍然欢迎。     
当然,如果您需要设置子菜单标题的图像或FaceID,这不是子菜单标题的可用方法,但如果您想在子菜单本身上设置图像或FaceID,我从这里修改代码来完成此操作:
 Public Sub newSubMenu()
 Dim menuBar As CommandBar
 Dim newMenu As CommandBarControl
 Dim menuItem As CommandBarControl
 Dim subMenuItem As CommandBarControl
 CommandBars("Sub Menu Bar").Delete
 Set menuBar = CommandBars.Add(menuBar:=False, Position:=msoBarPopup, Name:="Sub Menu Bar", Temporary:=True)


   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&First Menu"

   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&Second Menu"

   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&Third Menu"

   Set menuItem = newMenu.Controls.Add(Type:=msoControlButton)

   With menuItem
      .Caption = "F&irst Sub"
      .FaceId = "356"
      .OnAction = "myTest"
   End With

   Set menuItem = newMenu.Controls.Add(Type:=msoControlButton)

   With menuItem
      .Caption = "S&econd Sub"
      .FaceId = "333"
      .OnAction = "otherTest"
   End With

   Set menuItem = newMenu.Controls.Add(Type:=msoControlPopup)
   menuItem.Caption = "Sub Menus"

   Set subMenuItem = menuItem.Controls.Add(Type:=msoControlButton)

   With subMenuItem
      .Caption = "Item 1"
      .FaceId = 321
      .OnAction = "firstMacro"
   End With

   Set subMenuItem = menuItem.Controls.Add(Type:=msoControlButton)

   With subMenuItem
      .Caption = "Item 2"
      '.FaceId = 432
      .Picture = stdole.StdFunctions.LoadPicture("C:temptest.bmp")
      .OnAction = "secondMacro"
   End With
   CommandBars("Sub Menu Bar").ShowPopup
End Sub
我测试了它,它似乎适用于FaceID和加载的图片。 当然为了获得“运行时”的影响,我建议将其放在每次用户点击特定控件时调用的函数中。 这里也可以进一步用于处理可变图像。 希望这可以帮助。     

要回复问题请先登录注册