【问题标题】:Is there a way to disable CommandBar Controls in Powerpoint VBA?有没有办法在 Powerpoint VBA 中禁用 CommandBar 控件?
【发布时间】:2013-05-27 10:46:51
【问题描述】:

我有一个 PPT 插件,如果不维护某个 ViewType,它可能会失败。

我没有看到任何可以捕获更改并阻止更改的 PPTEvent(尽管,如果可能,请告知!)。所以我一直在使用 Ribbon/CommandBars 尝试禁用或隐藏与 ViewType 相关的某些控件。

我已通过Id 识别控件,并尝试将其.Visible 属性设置为False,或者设置为.Enabled = False,但似乎都没有任何影响。控件仍然可见,并且单击它们仍然会执行。

这个例子我会尝试禁用Slide Sorter 控件。这可以防止 VBE Execute 按钮,但它确实不会禁用按钮的操作,只要用户可能仍然单击它,它仍然会执行。

Sub DisableViewChange()

    Dim cBar As CommandBar
    Dim ctrl As CommandBarControl

    Set cBar = CommandBars("View")

    Set ctrl = cBar.FindControl(Id:=738)
        ctrl.Visible = True
        ctrl.Enabled = False
    Set btn = ctrl
        btn.Execute



    Set cBar = Nothing
    Set btn = Nothing
    Set ctrl = Nothing

End Sub

更新以包含我想禁用/隐藏/删除的元素的图片:

【问题讨论】:

  • 你能添加屏幕截图来展示你想要关闭的视图类型和控件吗?我没有运行英文版的PP,它会更容易得到你的情况。
  • @KazJaw 见上面的截图,如果信息足够,请告诉我。
  • 谢谢,现在让我想想 :)
  • 我刚刚在我的笔记中发现您不能从 VBA 修改功能区按钮,需要在文件的 XML 代码中更改它。但是,使用 VBA 可以更改按钮的行为,但我找不到解决方案:(
  • 我认为这是 Ribbon/XML 的事情...我玩过 Ribbon 可扩展性,但那是几个月前的事了。我对 Ribbon 不是很熟悉,那会是我可以制作成 PPAM 文件的特定于文件的 XML 吗?

标签: vba ribbon powerpoint


【解决方案1】:

您绝对可以修改特定文档的 XML 以从功能区中删除某些功能区元素 - 我已经做了很多这样的工作。您应该使用自定义 UI 编辑器进行调查,该编辑器将打开文档并允许您使用 Visible = False 修改器修改所选功能区组的 XML。然后,您应该能够保存加载项,当它加载到内存中时,它会隐藏您指定的部分,从而防止崩溃。

前段时间这对我很有用: http://gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html

每个 Office 应用程序都有 Microsoft XML 架构(我现在找不到 - 但肯定存在)。

希望对你有所帮助。

【讨论】:

  • 谢谢,我确实有自定义 UI 编辑器,所以也许我会尝试一下。
【解决方案2】:

Red 的上述建议很有帮助。通过一些 (errr...a lot) 的反复试验,我能够对功能区进行一些调整。我提出这个答案是希望我的反复试验对同样不熟悉 XML 的其他人有用:

我禁用了几个我想禁用的命令,这相对容易:

<commands>
    <command idMso="ViewSlideSorterView" enabled="false"/>
    <command idMso="ViewNotesPageView" enabled="false"/>
    <command idMso="ViewSlideShowReadingView" enabled="false"/>
    <command idMso="ViewSlideMasterView" enabled="false"/>
    <command idMso="ViewHandoutMasterView" enabled="false"/>
    <command idMso="ViewNotesMasterView" enabled="false"/>
    <command idMso="WindowNew" enabled="false"/>
</commands>

由于我对 XML 很感兴趣,因此我还决定将我的加载项命令从旧版 CommandBar(在加载项选项卡组下)迁移到自定义功能区选项卡,因此此 XML 还包含一个工作示例一个新选项卡,它由一个组、一个菜单和该菜单中的几个按钮组成。

这是经过验证的 XML,包括禁用的命令自定义选项卡菜单:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <commands>
        <command idMso="ViewSlideSorterView" enabled="false"/>
        <command idMso="ViewNotesPageView" enabled="false"/>
        <command idMso="ViewSlideShowReadingView" enabled="false"/>
        <command idMso="ViewSlideMasterView" enabled="false"/>
        <command idMso="ViewHandoutMasterView" enabled="false"/>
        <command idMso="ViewNotesMasterView" enabled="false"/>
        <command idMso="WindowNew" enabled="false"/>
    </commands>
    <ribbon startFromScratch="false">
        <tabs>
            <tab idMso="TabView">
                <group idMso="GroupPresentationViews" visible="true"/>
                <group idMso="GroupMasterViews" visible="true"/>
            </tab>
            <tab id="MyNewTab" label="My Tab Label">
                <group id="MyGroupMain" label="My Group Label">
                    <menu id="MyMenu" imageMso="HappyFace" size="large">
                        <button id="MyLaunchButton" label="Launch Tiger" onAction="macro1" />
                        <button id="MyInfoButton" label="Info" onAction="macro2" />
                        <button id="MyVersionButton" label="Version" onAction="macro3" />
                        <button id="MyHelpButton" label="Help" onAction="macro4" />
                    </menu>
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

我还没有将我的子程序/宏连接到这些按钮上,但这应该不是很困难。

如果不偶然发现此链接,我将无法通过此链接,该链接包含一批 Excel 文件(针对每个应用程序),按类型、ID、与其他项目的关系等列出所有菜单项。

http://www.microsoft.com/en-us/download/details.aspx?id=6627

【讨论】:

  • 啊是的,就是我说的资源,但是找不到!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 2020-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多