怎么做?
旧式CommandBars.Add
和Controls.Add
已过时,第一种根本不起作用。
另一方面,SetCustomUI
似乎不存在。
This解决方案曾经对我很有效,但我没有Visio了,看不到代码。如果有人可以从链接的vsd发布VBA代码,那就太好了。
以下是通过回拨getContent
Option Explicit
Private Sub dynamicMenu_getContent(control As IRibbonControl, ByRef content)
Dim RibbonXML As String
Stop
RibbonXML = "<menu xmlns=""http://schemas.microsoft.com/office/2006/01/customui"">"
RibbonXML = RibbonXML + " <button id=""dynaButton"" label=""Button"" "
RibbonXML = RibbonXML + " onAction=""OnAction"" imageMso=""FoxPro""/>"
RibbonXML = RibbonXML + " <menuSeparator id=""div2""/>"
RibbonXML = RibbonXML + " <dynamicMenu id=""subMenu"" label=""Sub Menu"" getContent=""getContent"" />"
RibbonXML = RibbonXML + "</menu>"
content = RibbonXML
End Sub
答案 0 :(得分:1)
您可以用来添加动态UI的一个基于功能区的解决方案是将新的选项卡,组和dynamicMenu控件添加到PPTM项目的XML(硬编码部分)中的功能区定义,然后以编程方式和项目添加到该菜单通过其getContent回调。您还可以在通过getVisible回调定义的条件下显示/隐藏选项卡/组/控件。它不是一个简单的两行或三行代码示例,因此您必须进行一些阅读才能实现此方法,但Cindy的答案中包含此页面将有所帮助:
这是您开始使用的XML:
<menu xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<button id="dynaButton" label="Button"
onAction="OnAction" imageMso="FoxPro"/>
<toggleButton id="dynaToggleButton" label="Toggle Button"
onAction="OnToggleAction" image="logo.bmp"/>
<menuSeparator id="div2"/>
<dynamicMenu id="subMenu" label="Sub Menu" getContent="GetSubContent" />
</menu>
然后您需要通过VBA回调子GetSubContent注入UI代码。