Office开发主要包括两个层面:功能开发和界面开发。

  • 功能开发,指的是开发的产品能够解决哪些问题,其他人使用了你的工具改善了哪些方面。
  • 界面开发,指的是产品与用户交互的方式,或者说产品呈现在Office窗口中的哪个场所。

一般来说,一个成熟完善的Office插件、工具在开发的过程中,都要考虑以上两个方面。

本帖和大家分享一下Office界面开发方面的话题。

Office编程开发,允许开发人员植入的元素主要有:

  • customUI(自定义功能区、Office菜单、右键菜单等)
  • CustomTaskpane(自定义任务窗格)
  • Commandbar和CommandbarControl(自定义工具栏、控件等)

除了以上3种,还可以使用窗体和控件,这里所说的窗体指的是开发语言中的窗体,例如用VB.Net开发的插件,那就可以加入VB.Net的窗体和控件。

其中,customUI和CustomTaskpane用于Office 2007以上版本,实际效果如下图: 

 

 Commandbar和CommandbarControls可用于所有Office版本。此外,还用于VBA和VB6编程环境外接程序的开发中,因为VBA编程环境一直是工具栏/控件方式。

实际效果如下图:

 

 然而,这些定制技术都有一定的理论基础,customUI和Commandbar方面的知识体系非常庞大,需要长期研究学习才能掌握和理解。

CustomTaskpane的实现过程最为简单,也没什么太复杂的变化代码。

以上这些重要技术的原理和具体实现过程,大家可以看我写过的书、发布的视频课程、帖子等。

为了方便更多人学习,下面分享Office界面开发相关的重要工具。

customUI方面的工具

customUI是通过XML代码实现,例如下面的XML将会在Excel的 开始选项卡的 字体组左侧出现一个自定义组。

 1 <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
 2     <ribbon startFromScratch="false">
 3         <tabs>
 4             <tab idMso="TabHome" label="Ribbon XML Editor">
 5                 <group id="Group1" label="测试" insertBeforeMso="GroupFont" >
 6                     <button id="Button1" label="蜘蛛网
" imageMso="ChartTypeOtherInsertGallery" onAction="Button1_Click" size="large" />
 7                 </group>
 8             </tab>
 9         </tabs>
10     </ribbon>
11 </customUI>

 

效果如下:

上述附件的下载地址: 

customUIDemo.rar

看了上面的效果,大家一定有如下疑问:

  1. XML代码是怎么写出来的?
  2. TabHome、GroupFont是哪儿来的?
  3. ChartTypeOtherInsertGallery从哪儿来的?
  4. Button1_Click起什么作用?

下面一一解释。

1. XML代码是微软规定好的语法格式,设计不同场所的Office界面,写法也有所不同。

 Ribbon XML Editor软件提供 快速访问工具栏、常用功能区等5个常用场所的XML模板。用户在此基础上稍作修改即可。

该软件还提供自动把XML压入Office文档、自动提取Office文档中的XML代码等功能。 

2. TabHome和GroupFont是Office的内置ID,叫做idMso。

 OfficeidMsoViewer软件提供Access/Excel/PowerPoint/Word的所有内置idMso查询,支持中文、英文、日文Office 2013。

点击任何一个节点,直接给出该节点对应的XML代码。

 

3. ChartTypeOtherInsertGallery是Office的一个内置图标,叫做imageMso。

 imageMso7345可以查询微软提供的7345个内置Office图标,下载这个工作簿,点击任何一个图标会给出该图标对应的imageMso字符串。

 

4. Button1_Click是按钮控件的回调函数名称,用来响应VBA中的过程。

Ribbon XML Editor软件可以根据XML生成 VBA、VB6/VB.Net/C#语言的回调函数。

 

Commandbar方面的工具

 在Excel 2003中,运行如下一段VBA代码,会在单元格右键添加一个“蜘蛛网”的自定义按钮。

 1 Sub AddControl()
 2     Dim cmb As CommandBar, ct As CommandBarButton
 3     Set cmb = Application.CommandBars("Cell")
 4     Set ct = cmb.Controls.Add(Type:=msoControlButton, before:=1)
 5     With ct
 6         .BeginGroup = False
 7         .Caption = "蜘蛛网(&Z)"
 8         .Enabled = True
 9         .FaceId = 484
10         .Style = msoButtonIconAndCaption
11         .OnAction = "ct_Click"
12         .TooltipText = "提示语"
13         .BeginGroup = False
14         .Visible = True
15     End With
16 End Sub
17 Sub ct_Click()
18     ActiveCell.Value = Application.CommandBars.ActionControl.Caption
19 End Sub

实际效果如下图:

 

看到这个效果,一般会产生如下疑问:

Application.CommandBars(“Cell”)这个代码的Cell代表什么意思?

FaceId = 484,这个数字起什么作用?

回答如下:

Cell是Excel的一个内置工具栏的名称,CommandBars(“Cell”)表示单元格的右键菜单,右键菜单也属于工具栏的一个类型。

查询所有内置工具栏的工具有:

OfficeCommandbarViewer:该工具可以查看常用Office组件的所有内置工具栏和内置控件信息。

 OfficeCommandbarDesigner:可以从该软件中直接操作和控制Office的所有工具栏,可以查看工具栏和控件信息,也可以编辑。

 

使用以上工具,就可以轻松地知道每个工具栏的名称叫什么了,从而在正确的场所设计自己的工具。

对于工具栏中控件的图标,微软采用FaceID来规定,每个数字代表一个内置图标。

FaceIDViewer采用Excel工作簿制作的图标查看工具。

 每个图标下面有一个数字,在代码中设置FaceID为这个数字就可以。

 以上讲过的所有工具,在我的博客园中均可下载到。下载网址大家自行搜索。

 

版权声明:本文为ryueifu-VBA原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ryueifu-VBA/p/9480509.html