Excel自定义RibbonUI;添加菜单

时间:2017-01-12 14:09:17

标签: excel excel-vba ribbon ribbonx excel-iribbonui vba

我正在运行2016 Standalone Excel(32位版本)。我一直在构建一个自定义功能区,到目前为止一直很好。文档非常流畅,写得很好。但是,我无法找到任何方法来包含菜单'section titles',如下所示:

enter image description here

具体参考图片中的章节标题(即“单元格大小”,“可见性”等)。我已经看到其他插件模拟这个,除非它们是COM加载项。以下是我参考的文档:https://msdn.microsoft.com/en-us/library/dd911038(v=office.12).aspx

它已过时了吗?我尝试在项目中添加“带标题的菜单”,但这甚至都不起作用。我还尝试添加<labelControl />,当labelControl在菜单中时,功能区甚至不加载。

此外,我的Excel版本甚至不会显示<dialogBoxLauncher>所以我担心一些事情与我的Excel版本不兼容。我很容易跟踪文档,其他一切都运行得很好。我甚至在我使用的功能区中有一个editBox,并且不会遇到任何91错误。所以我知道这不是我。

任何人都可以使用提供的API复制此内容吗?我的功能区是用XML构建的,所以我尽可能减少了错误的可能性,这是我的问题吗?是否应该专门为节标题实现运行时代码?

我的设置的简短片段

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnRibbonLoad">

<ribbon>
<tabs>
<tab idMso="TabHome">        

<group id="GroupTextTools" insertAfterMso="GroupFont" label="Text Tools">
    <gallery  id="textcase_gallery" label="Case Select" columns="1" size="large" imageMso="WordArtInsertDialogClassic" onAction="TextCase_SwitchCase" >
        <item id="textcase_CapsButton" imageMso="TextAllCaps" label="Uppercase" screentip="Changes selected cells to all uppercase" />
        <item id="textcase_ProperButton" label="Propercase" imageMso="ChangeCaseDialogClassic" screentip="Changes selected cells to proper case" />
        <item id="textcase_LowerButton" label="Lowercase" imageMso="FontSizeDecrease" screentip="Changes selected cells to all small case" />
    </gallery>
</group>
</tab>

<tab id="CustomTab" label="*removed*" insertAfterMso= "TabDeveloper">

<!--
  GROUP A
-->
<group id="GroupFileOptions" label="File Options">

  <button id="fileoptions_CloseButton" label="Close &amp;&amp; Reopen" onAction="RunMacro" imageMso="SourceControlCheckIn" size="large" screentip="Saves Document, Closes &amp;&amp; Reopens immediately"/>

  <menu id="exportingmenu" label="Exporting" imageMso="FileCheckOut" size="large" screentip="Exporting Options">
      <menu id="exportmenu_AsRange" label="As Range"> <!-- This is where I would like section Titles to be instead of another menu -->
        <button id="exportmenu_range_CSVCButton" label="To CSV w/commas"/>
        <button id="exportmenu_range_CSVSButton" label="To CSV w/spaces"/>
        <button id="exportmenu_range_PDF" label="To PDF"/>
      </menu>
      <menu id="exportmenu_AsSheet" label="As Sheet"> <!--Goal is for this to be a section title, where I tried putting a <labelControl> -->
      </menu>
  </menu>

</group>

<!-- .... -->
</tab>
</tabs>
</ribbon>
</customUI>

2 个答案:

答案 0 :(得分:2)

经过一些试验和错误以及David Zemens通过排除错误后的非自愿推送,我发现通过交叉引用我使用其父元素尝试的所有内容,使逻辑编译有意义的是<menuSeparator>,恰好有一个&#39;标题&#39;属性。所以通过设置你得到一个漂亮的部分标题如下所示:

enter image description here

<menuSeparator id="someID" title="Test title"/>

答案 1 :(得分:1)

我设法通过getContent回调将菜单标题仅放在dynamicMenu上,这意味着xml在VBA中定义为一段xml字符串,而不是在customUI xml中。 到目前为止我在customUI接口上找到的最全面的文档都在https://msdn.microsoft.com/en-us/library/dd911038(v=office.12).aspx上,但引用只指向2007.此链接包含更广泛的控件和选项列表,以及Access的额外控件{{3 }}