请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

共享社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 1784|回复: 17

[原创] VBA从小白到达人养成记第二篇-小白也做工具箱!

[复制链接]

12

主题

59

帖子

188

积分

排长

Rank: 2

威望
4
金钱
294
贡献
5
发表于 2015-11-4 11:54:47 | 显示全部楼层 |阅读模式
第四章:定制属于自己的工具箱
    对于初学的VBA的学者来说当你会写一定量的代码对数据具有一定的处理能力之后,慢慢的你就会发现在以后的工作中经常会用到自己之前写过的代码或宏过程,经常用的话你只能将你的代码再粘贴到新表里去用,这样的确挺麻烦的。我那时就开始思考要做自己的一套工具箱,后来发现了Excel2007的选项卡原来是可以开发的,这样的话您就可以定制属于自己的界面,并且将自己常用的过程调用一下即可。说起来简单哈,做起来还是得上手去做!因为后面你必须学xml文件的编辑,并且要学习ribbonx语言的规则,稍有不慎就可能出错,哈哈卖个关子。

    总结一下,为什么要选择选项卡定制自己的工具箱?

    1、选项卡具有丰富的控件可供选择

    2、选项卡可以调用几乎所有Office内置图标,美观性极强

    3、只要你有自己的代码库或者代码存量,你只需要学一学ribbonx语言就可以自我随意定制

    4、用于制作加载项的表格本身就是一个比较大的数据库,这样就不用频繁的操作注册表来记录数据了,这个以后会说到的

    5、比较重要的一点就是做选项卡是为你以后学习COM加载项做准备,这个非常重要!!!



评分

参与人数 3威望 +4 金钱 +150 贡献 +3 技术 +4 鲜花 +20 收起 理由
yjboer + 5
陈茂利 + 3 + 100 + 3 + 3 + 15 很给力!
共享社区张少同 + 1 + 50 + 1 很给力!

查看全部评分

回复

使用道具 举报

75

主题

115

帖子

173

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
0
金钱
259
贡献
0
发表于 2015-11-7 08:07:32 | 显示全部楼层


回复 支持 反对

使用道具 举报

75

主题

115

帖子

173

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
0
金钱
259
贡献
0
发表于 2015-11-6 10:43:28 | 显示全部楼层
接下来我们就对CustomUI里面的代码逐一进行解释一番以加深您的理解。
1、<ribbon startFromScratch="false">
显示所有的选项卡
2、<tabs> <tab id="rxtabCustom" label="共享社区"  insertAfterMso="TabHome">
插入一个名为“共享社区”的选项卡,这个共享社区您可以自己随意更改成自己的即可,
"TabHome"是开始选项卡的意思,insertAfterMso="TabHome">这句话是完整意思在开始选项卡之后插入“共享社区”的选项卡
共享社区工具截图.jpg
就如上图共享社区在开始之后
3、<group id="mygroupA" label="www.gxsq.com">
插入一个名为
"www.gxsq.com"的组,就像图2里面组底下的名字一样,这个您可以自己DIY的,这里有一个特别要提醒初学者的地方就是group id的这个id命名。每个选项卡里可以有很多组,也可以有很多按钮及其他控件,每个对象都必须有一个id,这个id的命名可以说您能随意写,但只有一个原则:所有组的id不可出现重复命名,所有按钮的id不可出现重复命名,简而言之,每种控件的id不可重复,否则即使您将CustomUI文件放进到加载宏里面也不会出现选项卡的。
3、<button id="a1"  imageMso="HyperlinkInsert"  size="large"  label="共享社区"  onAction="test1"/>
这句话是意思在
"www.gxsq.com"这个组下面插入一个按钮,按钮的id是“a1”,imageMso是图标的意思,这个一会儿再说,按钮的size大小是large大的,同时您还可以看到后面第二组里的“欢迎加入”和“有问必答”的按钮是小的,当您把size="large"这句话删掉之后默认按钮就会是小的了,您自己可以尝试一下。按钮的名称叫做“共享社区”,onAction即这个按钮可以回调您表格里的过程名称,比如test1,您就可以在您的表里写一个text1的过程,点击这个按钮就可以调用您自己的过程了。比如我的表格里的代码如下:
  1. Sub test1(control As IRibbonControl)
  2. MsgBox "本教程由共享社区www.gxsq.com出品。", 64 Or vbOKCancel, "共享社区"
  3.     ActiveWorkbook.FollowHyperlink _
  4.       Address:="http://www.gxsq.com/", _
  5.       NewWindow:=True
  6. End Sub
复制代码
4、那么上面的按钮的图标 imageMso="HyperlinkInsert"双括号里面的这个代码是哪里来的呢?您可以将我下面提供的附件下载下来里面提供了非常非常丰富的图标供您试用,您只需要点击一下您想要的图标,然后就会随机在单元格里出现您想要图标的代码,然后将代码复制到任意按钮或者其他控件的imageMso=后面的双括号里就可以了,有木有赶脚很美观呢?
图标提取工具.zip (534.06 KB, 下载次数: 10)
5、提醒各位初学者一下:
我们知道vba里面一段完整的代码是sub开头,end sub结尾,换句话说是有头有尾,那么选项卡里面的组包括后面您可以学的菜单按钮都是有始有终的,比如您看下面这个完整的组开头是group id=...,结尾是也是group,这个您必须注意起来,稍有不慎丢失一个结尾将导致无法显示选项卡
  1.          <group id="mygroupC" label="Q群:397245435">               
  2.                         <button id="a3"
  3.                       imageMso="AddOrRemoveAttendees"
  4.                       label="欢迎加入"
  5.                      />
  6.                         <button id="a4"
  7.                       imageMso="TentativeAcceptInvitation"
  8.                       label="有问必答"
  9.                      />
  10.      </group>  
复制代码

6、最后呢,我这个选项卡里面只讲述了按钮控件的试用,但是您知道吗?只要是在Excel里您在选项卡区域可以看到的选项卡形式都可以用语言控制开发的,您是不是想要学习更多呢?哈哈,预知结果如何,请听下次分解吧~~

评分

参与人数 1鲜花 +1 收起 理由
yjboer + 1 很给力!

查看全部评分

回复 支持 2 反对 0

使用道具 举报

4

主题

45

帖子

87

积分

排长

Rank: 2

威望
0
金钱
146
贡献
2
发表于 2015-11-6 18:43:07 | 显示全部楼层

QQ截图20151106184935.png
学习了,要顶贴。支持楼主
回复 支持 1 反对 0

使用道具 举报

75

主题

115

帖子

173

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
0
金钱
259
贡献
0
发表于 2015-11-5 05:26:10 | 显示全部楼层
让我们一起来开始制作我们的这个选项卡工具箱吧。
     在教程正式开始之前先声明一下,该选项卡制作教程适用于Excel 2007~2013亲测可用,2016未经本人测试还,Excel 2003因为是菜单形式的,所以不能用这种方法,2003需要另外一个加载项的方法开发,待我将这个将完之后再说2003的,WPS也不能用这种方法开发,WPS也可以开发选项卡,但是会比Office的这种方法要相对复杂一点相对更有深度一点,这个以后也会说的。
第一步:首先是准备材料,您先将我下面提供的附件“样板表格”下载下来。 样板表格.zip (11.99 KB, 下载次数: 47)
第二步:您再将我提供第二个附件“CustomUI”下载下来 CustomUI.zip (801 Bytes, 下载次数: 41)
第三步:注意第三步哦,新手学习先不要问为什么要这样做,你要做的仅仅是按我说的去做就可以了。将“样板表格.xlsm”这个启用宏的表格,因为我们要给按钮指定代码,所以选择了启用宏的表格,我们将这个表格的后缀“xlsm”更改为“zip”压缩格式的文件,然后打开这个更改了后缀的“样板表格.zip”您会看到如下截图内容:
压缩表格内容.jpg
第四步:将您下载的“CustomUI”这个文件夹整个复制到这个压缩文件里面如下图您就做对了!
移动到压缩文件里.gif
第五步:关闭这个压缩文件,然后将“样板表格.zip”的后缀改为之前的“xlsm”启用宏的表格,然后打开这个表格您就会发现选项卡已经出现在您功能区咯~~~  
    好了,做完上面五步是不是很简单选项卡就做出来了?有些人看到这里可能会认为你这算什么教材?只教给我吃了吃猪肉,却看不到猪跑,您千万别小看这五步,如果以后您在开发您自己的选项卡时,这五步是调试选项卡非常重要的五步,我已经做这几步不下上千次了吧现在您就可以用记事本打开“CustomUI”这个文件夹里面的文件预览一下,试着改一改里面的文字做一些尝试了,今天累了先这样吧,明天我给大家一句一句具体分析选项卡功能区代码,让您知道猪是怎么跑起来的,嘎嘎~



回复 支持 1 反对 0

使用道具 举报

75

主题

115

帖子

173

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
0
金钱
259
贡献
0
发表于 2015-11-5 04:41:56 | 显示全部楼层
    下面就让我们正式开始制作我们的第一个选项卡工具箱,大家要动起手来跟上我的脚步哦~~首先来看一下我们即将制作工具箱最终成果是怎样的吧,请看下图: 共享社区工具截图.jpg
    我们先来分析一下这个工具箱从眼观上都包括些什么,首先是选项卡的名字叫“共享社区”,然后这个选项卡下面有两个分区,专业术语叫“组”,第一组名字是我们社区的网站“www.gxsq.com”,第二个组的名字是我们的官方QQ群:397245435。那么第一个组里有两个大按钮,分别是“共享社区”及“经验分享”,第二个组有两个小按钮分别是“欢迎加入”及“有问必答”。同时呢,每个按钮都有一个好看的图标。注意我这些表述可不是白表述的,其实这就是后面要说的选项卡控制区代码的中文字面翻译

    我想这个时候您应该会思考选项卡的名字,这些组的名字,这些按钮的名字包括这些按钮的图标可以不可以随意更换成我想要的呢?答案不仅仅是可以,而是完全可以哒~先跟我看一下成果展示吧,下一帖我正式一步一步的讲述如何“徒手”就能制作这样一个工具箱。

共享社区工具箱.gif
    通过看这个动态演示图,您可以看到每一个按钮还会您指定的某段代码做出相应。换句话说,我这只是简单演示,您学会了以后就可以把按钮指定为您自己的写的代码了,嘎嘎~
回复 支持 反对

使用道具 举报

14

主题

84

帖子

152

积分

网站编辑

Rank: 8Rank: 8

威望
0
金钱
251
贡献
6
发表于 2015-11-6 10:22:25 | 显示全部楼层
哇,学习了!
回复

使用道具 举报

4

主题

45

帖子

87

积分

排长

Rank: 2

威望
0
金钱
146
贡献
2
发表于 2015-11-6 11:13:39 | 显示全部楼层
共享社区张少同 发表于 2015-11-6 10:43
接下来我们就对CustomUI里面的代码逐一进行解释一番以加深您的理解。5、提醒各位初学者一下:
我们知道vba ...

加油,一直默默顶你
回复 支持 反对

使用道具 举报

4

主题

45

帖子

87

积分

排长

Rank: 2

威望
0
金钱
146
贡献
2
发表于 2015-11-6 11:14:05 | 显示全部楼层
共享社区张少同 发表于 2015-11-6 10:43
接下来我们就对CustomUI里面的代码逐一进行解释一番以加深您的理解。5、提醒各位初学者一下:
我们知道vba ...

加油,一直默默顶你
回复 支持 反对

使用道具 举报

75

主题

115

帖子

173

积分

管理员

Rank: 9Rank: 9Rank: 9

威望
0
金钱
259
贡献
0
发表于 2015-11-6 15:31:06 | 显示全部楼层
yjboer 发表于 2015-11-6 11:14
加油,一直默默顶你

你也太无闻了

评分

参与人数 1鲜花 +3 收起 理由
yjboer + 3 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

4

主题

45

帖子

87

积分

排长

Rank: 2

威望
0
金钱
146
贡献
2
发表于 2015-11-6 16:20:01 | 显示全部楼层

不会这个贴从头到尾只有我一个人在关注吧,他们都等现成的去了?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|共享社区 ( 京ICP备15025663号-2  

GMT+8, 2018-12-11 08:21 , Processed in 0.217259 second(s), 29 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表