给office添加功能按钮

Visual Basic for Applications 2019-03-07

这篇文章秉承拿来主义思想,学会复制粘贴使用即可,不做理论上的讲解,想深入学习的同学自行百度Ribbon,XML相关知识。
这篇文章主要介绍一下怎样给office菜单功能添加自定义的功能。在起名字的时候纠结了一下,本想直接写成《Microsoft Ribbon菜单功能区添加自定功能》,怕大家看到E问头皮发麻,就写了个很土但是能看懂的名字。

一、准备工作

几篇参考文档:
1.Customizing the 2007 Office Fluent Ribbon for Developers https://docs.microsoft.com/zh-cn/previous-versions/office/developer/office-2007/aa338199(v=office.12)
2.VSTO二次开发PowerPoint之:XML方式创建Ribbon并自定义图标https://blog.51cto.com/yangfandev/1404925

office功能区添加自定义功能实质上是通XML添加的,这里推荐一个工具方便编辑修改XML文件。
OfficeCustomUIEditorSetup(2010支持中文编辑).rar
OfficeidMsoViewer,本工具用于查看Office内置控件的idMso属性。
OfficeidMsoViewer.zip

二、开始动工

1.启动Excel文件,新建一个Excel文件,另存为xlsm格式,关闭Excel。


查看图示


2.启动Custom UI Editor For Microsoft Office软件,打开刚才保存的Excel文件。

查看图示


3.依次点击Inset-Sample XML-Excel-A Custom Tab

查图示



最终效果


4.保存,双击打开Excel文件查看效果。

查看图示

三、解释

在XML中:
id相当于给每个模块定义的名称,必须唯一不能重复。
label是相应空间在tab上显示的名称。
size控件打开,可以是large和small。
onAction控件点击后执行的事件名称。



1.固定格式部分,用于声明,使用过程中不用修改。

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <ribbon>

    </ribbon>
</customUI>



2.Excel上面整个功能区都属于tabs,是tab的集合。开始、插入、页面布局...这些都属于tab。

        <tabs>
            <tab id="customTab" label="Contoso" insertAfterMso="TabHome">

            </tab>
        </tabs>



3.实例中我们插入了一个tab,叫Contoso,在开始tab后面。

<tab id="customTab" label="Contoso" insertAfterMso="TabHome">

</tab>



4.插入6组功能,也就是6个group。其中id为customGroup之中加入了3个按钮。由于版本兼容性问题6个group之中只显示了前3。

                <group idMso="GroupClipboard" />
                <group idMso="GroupFont" />
                <group id="customGroup" label="Contoso Tools">
                    <button id="customButton1" label="ConBold" size="large" onAction="conBoldSub" imageMso="Bold" />
                    <button id="customButton2" label="ConItalic" size="large" onAction="conItalicSub" imageMso="Italic" />
                    <button id="customButton3" label="ConUnderline" size="large" onAction="conUnderlineSub" imageMso="Underline" />
                </group>
                <group idMso="GroupEnterDataAlignment" />
                <group idMso="GroupEnterDataNumber" />
                <group idMso="GroupQuickFormatting" />

知识共享署名声明
本文由 herokay 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论