excel学习库

excel表格_excel函数公式大全_execl从入门到精通

自定义RibbonX(功能区)的实现

分享成果,随喜正能量】生命不是比较,不是战胜,而是接纳和完善,常常走向内心,了解自己,知道自己的方向,让未知的自己成为生命的礼物。学会享受独处,孤独,是一种高远的生命体验,人只有在独处时,才能真正与生命、宇宙对话。我们在孤独中,完全没有必要如履薄冰,独处,总不免有一些落寞,但也正因为落寞,我们可以走向自己内心深处,了解自己,去做自己真正喜欢的事。

实际工作中分发VBA程序,写好的程序可以升级

应用1 在EXCEL中构建加载项

Excel是一个功能非常强大的应用程序,具有数千个选项和功能,可帮助我们构建模型、报告和数据分析。但是,在我们日常工作中往往也会需要一些额外的功能,这就需要我们使用VBA来扩充。本文将给大家展示如何创建一个小型实用程序,我将概述来创建外接程序的所有步骤。这些步骤的使用可以帮助大家构建自己的自定义应用。

5 Ribbon(功能区)的介绍

在Office的发展历程中,07版之前的版本,我们称之为低版本,到07版及之后我们称之为高版本,低版本中的菜单命令栏结构存在诸多不便,这就导致了在高版本Ribbon的诞生。

对EXCEL及WORD比较熟悉的朋友知道:在Ribbon中将命令按逻辑分组,将最常使用的命令放到用户最容易看到的地方且以最醒目的方式显示,将以前深藏的或难以找到的功能移到了界面上,大大增强了命令的可访问程度;Ribbon始终固定在屏幕上方,不能随意定制,因而界面是固定的,不会因某些操作而造成混乱。如果要定制Ribbon,则需要编程或第三方工具,且需要理解XML及其规则。

一般来说,大多数用户只使用了软件20%的功能,而这20%的功能对于特定的用户来说可能又各自不同,在Excel 2003中,我们可以根据自已的喜好自定义菜单和工具栏,方便自已使用最常用的功能。在Excel 2007中,如果不使用RibbonX,则只能在快速访问工具栏(QAT)中添加自已常用的命令。

由于不能随意定制,因此命令不总是能按照某人所需要的顺序随意排列。有时,实现一项任务可能需要花时间单击不同的选项卡,使用不同组中的命令。

其实我们在高版本的office中也可以实现自定义Ribbon,只是只能在设计时,而不是在运行时,通常不能动态添加选项卡、组或控件。同时我们也很容易移除定制的Ribbon,只要文档中不包含定制Ribbon的代码,都将恢复默认的Ribbon界面。而不像以前版本的Office,自定义菜单和命令栏后难以恢复,尤其对于新用户。并且,除了加载项、全局模板外,在某文档中的Ribbon定制不会影响新文档的Ribbon。

6 自定义RibbonX(功能区)的实现

为了实现本专题加载项的要求我们要实现功能区的定制,这里我利用了一个Office RibbonX Editor的第三方软件来实现(这个软件会随教程提供),这里我只是列出实现本专题要求的代码部分,只是介绍,有兴趣的朋友可以通过其他途径学习。打开软件后,选择要自定义功能区的文件:

然后录入下面的代码:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="mynzSheetToolscustomUI_onLoad">

<ribbon>

<tabs>

<tab id="mynzSheetTools" label="工作表工具">

<group id="mynzSheetToolsGeneral" label="工作表工具">

<dropDown id="mynzSheetToolsbtnSheets"

getItemCount="mynzSheetToolsbtnSheets_Count"

getItemLabel="mynzSheetToolsbtnSheets_getItemLabel"

onAction="mynzSheetToolsbtnSheets_Click"

sizeString="MMMMMMMMM"

label="Sheets"

getSelectedItemIndex="mynzSheetToolsbtnSheets_getSelectedItemIndex"

/>

<button id="mynzSheetToolsbtnInsertToc"

label="Table Of Contents"

size="large"

onAction="mynzSheetToolsbtnInsertToc"

imageMso="CustomTableOfContentsGallery" />

</group>

</tab>

</tabs>

</ribbon>

</customUI>

代码截图:

最后保存。

代码的简单介绍:在这个xml中看到的项数是所谓的回调。这意味着Excel希望在相关工作簿中使用VBA代码。xml包含以下回调(callbacks):

① onLoad(加载工作簿时调用)

② getItemCount(返回下拉控件的项目数)

③ getItemLabel(获取下拉列表的第n个项目)

④ onAction(单击按钮或进行下拉选择时调用)

⑥ GetSelectEditedIndex(调用以获取下拉列表中需要选择的项)

  1. 在上述代码中有些复杂的过程名称(如“mynzpsheettoolsbtnssheets_Click”)。尤其是“mynzSheetTools”部分。在Excel实例中,回调名称必须是唯一的,是独一无二的。在Excel中打开的任何其他工作簿的子名称都不能与任何回调一致。否则,可能会导致其他工作簿中的例程被功能区调用!这就是为什么我在例程名称前面加上一些唯一标识包含RibbonX代码的工作簿前缀的原因。

我们要完成的各项任务罗列如下(这里只是罗列了任务,我们将在代码实现时填充代码):

Sub mynzSheetToolscustomUI_onLoad(ribbon As IRibbonUI)

End Sub

Sub mynzSheetToolsbtnInsertTOC(control As IRibbonControl)

End Sub

'Callback for mynzSheetToolsbtnSheets getItemCount

Sub mynzSheetToolsbtnSheets_Count(control As IRibbonControl, ByRef returnedVal)

End Sub

Public Sub mynzSheetToolsbtnSheets_getItemLabel(control As IRibbonControl, Index As Integer, ByRef returnedVal)

End Sub

'Callback for mynzSheetToolsbtnSheets getSelectedItemIndex

Sub mynzSheetToolsbtnSheets_getSelectedItemIndex(control As IRibbonControl, ByRef returnedVal)

End Sub

Sub mynzSheetToolsbtnSheets_Click(control As IRibbonControl, id As String, Index As Integer)

End Su

上面的代码将在功能区中添加一个“工作表工具”的任务,这个任务下面有一个选择工具和一个列表工具。

[待续]

  1. 本讲内容参考程序文件:高级应用01.xlsm

  1. 第三方应用软件:Office RibbonXEditor-NETFramework-Installer.EXE

  1. 实现的外接应用程序:mynzSheetTools.xlma

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

分享成果,随喜正能量】一心染善,万劫不朽。人生在世,遇见善良的时候,就要学会付出,你的付出和感恩将是对别人善良最好的回馈。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接