以编程方式自定义PowerPoint中的功能区



如何做到这一点?

旧式的CommandBars.AddControls.Add已经过时,第一种根本不起作用。

另一方面,SetCustomUI似乎并不存在。

这个解决方案曾经对我很有效,但我不再有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

Valery,如果你表现出一些尊重,而不是粗鲁和蔑视贡献者的帮助,你更有可能得到那些免费放弃时间的人的帮助。现在让我们把它放在一边。

可以用于添加动态UI的一个基于功能区的解决方案是,在PPTM项目(硬编码部分)的XML中的功能区定义中添加一个新的选项卡、组和dynamicMenu控件,然后通过其getContent回调以编程方式将项添加到该菜单中。您还可以在通过getVisible回调定义的条件下显示/隐藏选项卡/组/控件。这不是一个简单的两三行代码的例子,所以你必须进行一些阅读才能实现这种方法,但Cindy的答案中包含的这个页面会有所帮助:

向下滚动至"dynamicMenu"

这是您需要开始使用的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代码。

最新更新