我有一个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
更新以包含我要禁用/隐藏/删除的元素的图片:
答案 0 :(得分:1)
您绝对可以修改特定文档的XML以从功能区中删除某些功能区元素 - 我已经完成了大量的操作。您应该使用自定义UI编辑器进行调查,该编辑器将打开文档并允许您使用Visible = False修饰符修改所选功能区组的XML。然后,您应该能够保存加载项,当它加载到内存中时,它将隐藏您指定的部分,从而防止崩溃。
这对我来说很有用: http://gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html
每个Office应用程序都有Microsoft XML Schema(我现在找不到 - 但肯定存在)。
我希望能有所帮助。
答案 1 :(得分: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,与其他项目的关系等列出所有菜单项。 / p>
http://www.microsoft.com/en-us/download/details.aspx?id=6627