2013-05-31 6 views
1

У меня есть надстройка PPT, которая может выйти из строя, если определенный вид ViewType не поддерживается.Есть ли способ отключить элементы управления CommandBar в Powerpoint VBA?

Я не вижу никакого 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 

Update включать фотографии из элементов я хотел бы, чтобы отключить/скрыть/удалить:

enter image description here

+0

Не могли бы вы добавить снимок экрана представления типа просмотра и управления, который вы хотите выключить ?? Я не использую английскую версию PP, и было бы легче получить вашу ситуацию. –

+0

@KazJaw см. Скриншот выше, дайте мне знать, если этого достаточно. –

+0

спасибо, позвольте мне теперь подумать :) –

ответ

0

Рекомендация Красного выше была очень полезна. С некоторыми (errr ... a лот) проб и ошибок я смог внести некоторые изменения в ленту. Я представляю этот ответ в надежде, что мои метод пробы и ошибки будут полезными для кого-то, кто в равной степени знаком с 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 (для каждого приложения), в котором перечислены все пункты меню по типу, идентификатору, отношению к другим элементам и т. Д.

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

+1

ах да, это ресурс, о котором я говорил, но не смог найти! – Thomas

1

Вы можете определенно изменить XML конкретного документа, чтобы удалить некоторые элементы ленты из ленты - я сделал огромное количество этого. Вы должны исследовать с помощью Редактора пользовательского интерфейса, который откроет документ и позволит вам изменить XML выбранных групп лент с помощью модификатора Visible = False. Затем вы сможете сохранить надстройку, и когда она будет загружена в память, она скроет указанные вами детали, предотвращая вашу аварию.

Это было полезно для меня некоторое время назад: http://gregmaxey.mvps.org/word_tip_pages/customize_ribbon_main.html

Есть Microsoft XML-схемы для каждого из приложений Office (который я не могу найти сейчас - но, безусловно, существует).

Надеюсь, это поможет.

+0

Спасибо, у меня есть пользовательский интерфейс редактор, поэтому, возможно, я дам это попробовать. –

Смежные вопросы