1

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

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

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

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

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

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

在此处输入图像描述

4

2 回答 2

1

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

不久前这对我很有用:http: //gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html

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

我希望这会有所帮助。

于 2013-05-31T21:45:23.253 回答
0

Red 的上述建议非常有帮助。通过一些(错误...很多)反复试验,我能够对功能区进行一些调整。我提出这个答案是希望我的试验和错误对同样不熟悉 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

于 2013-06-04T03:05:29.787 回答