установить вкладку по умолчанию в офисной ленте для каждого документа, открытого из шаблона - PullRequest
0 голосов
/ 04 марта 2019

Я создал шаблон слова с пользовательской лентой XML, и я делаю его по умолчанию при создании документов из этого шаблона.

Я имею в коде:

Public myRibbon
Sub Onload(ribbon As IRibbonUI)
    'Creates a ribbon instance for use in this project'
    Set myRibbon = ribbon
    myRibbon.ActivateTab ("CustomTab1")
End Sub

Это прекрасно работает для первого документа, созданного из шаблона, однако, если есть открытый документ, и я запускаю новый, новый делаетне открывается на выбранной вкладке.Я попытался добавить:

Sub AutoNew()
    myRibbon.ActivateTab ("CustomTab1")
End Sub

И я попробовал это:

Sub AutoNew()
    myRibbon.Invalidate
    myRibbon.ActivateTab ("CustomTab1")
End Sub

Но ни один не работает.Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Если у вас уже открыт документ на основе этого шаблона, то лента в этом шаблоне уже загружена, поэтому событие OnLoad не запускается.

Не существует надежного метода активацииВкладка с помощью кода.

Однако может быть решение, которое не требует никакого кода.Обратите внимание, какая вкладка активируется при создании нового документа на основе вашего шаблона.

Если это вкладка «Главная страница», все, что вам нужно сделать, чтобы активировать вкладку, - это поместить вкладку перед вкладкой «Главная».Вы делаете это, редактируя ленту xml так, чтобы она выглядела примерно так:

<tab id="tabCustom" insertBeforeMso="TabHome" label="My Custom Tab">

Если это не вкладка «Главная», вам не повезло!

0 голосов
/ 04 марта 2019

Я обнаружил, что создание ленты программным способом доставляет больше хлопот, чем стоит.Вместо этого я использую подход XML.Доступно несколько бесплатных редакторов, один из которых называется Редактор пользовательского интерфейса Office .

В Интернете много учебных пособий, поэтому я не буду давать их здесь, просто выполните поиск по запросу "custom ribbon xml" илианалогично.

Ниже приведен базовый XML-код для создания настраиваемой вкладки:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon startFromScratch="false">
        <tabs>
            <tab id="customTab" label="CustomTab1">
                <group id="grpCustomTab" label="CustomGroup1">
                    <button id="btnCustomButton" label="A custom button" imageMso=" ShapeSmileyFace" size="large" onAction="ACallBack" />
                </group>
            </tab>
        </tabs>
    </ribbon>
</customUI>

Здесь важны onAction="ACallBack" и buttonID.Параметр onAction - это подпрограмма, которая будет вызываться при нажатии кнопки.Каждая кнопка должна иметь один и тот же сабвуфер onAction со специальной подписью:

Sub ACallBack(control As IRibbonControl)

Вы можете назвать сабвуфер любым действительным, но он должен иметь параметр IRibbonControl.ButtonID - это то, что вы используете, чтобы затем вызвать правильный саб.Допустим, у вас были кнопки с идентификаторами ID1, ID2 и ID3.Ваш код может выглядеть следующим образом:

Sub ACallBack(control As IRibbonControl)

Application.Run CStr(control.ID)

End Sub

Sub ID1

Msgbox "This is sub 1"

End Sub

Sub ID2

Msgbox "This is sub 2"

End Sub

Sub ID3

Msgbox "This is sub 3"

End Sub

При таком подходе все документы, основанные на шаблоне, будут автоматически отображать вашу пользовательскую ленту.

...