在office功能区中为从模板打开的每个文档设置默认选项卡

问题描述 投票:0回答:2

我创建了一个带有自定义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

但都不起作用。任何帮助,将不胜感激!

xml vba ms-word word-vba ribbon
2个回答
1
投票

如果您已经打开了基于此模板的文档,则该模板中的功能区已经加载,这就是OnLoad事件不会触发的原因。

没有一种通过代码激活选项卡的可靠方法。

但是,可能有一个解决方案,不需要任何代码。在创建基于模板的新文档时,观察激活哪个选项卡。

如果是“主页”选项卡,则只需激活选项卡,就可以将选项卡放在“主页”选项卡之前。您可以通过编辑功能区xml来执行此操作,如下所示:

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

如果它不是Home标签,那你就不走运了!


0
投票

我发现以编程方式创建一个功能区更加麻烦它的价值。相反,我使用XML方法。有几个免费的编辑器,一个叫做Office Custom UI Editor

网上有很多教程,所以我不会在这里给一个,只搜索'自定义功能区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)

你可以调用sub有效但它必须有IRibbonControl参数。 buttonID是您用来调用右侧子的。假设你有ID 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

使用此方法,基于模板的所有文档将自动显示您的自定义功能区。

© www.soinside.com 2019 - 2024. All rights reserved.