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

时间:2016-05-19 14:46:59

标签: vba powerpoint powerpoint-vba

怎么做?

旧式CommandBars.AddControls.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

1 个答案:

答案 0 :(得分:1)

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

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

Scroll down to "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代码。