ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 综合应用 > 细品RibbonX(50):如何共享Ribbon定制之Excel部署技术

细品RibbonX(50):如何共享Ribbon定制之Excel部署技术

作者:绿色风 分类: 时间:2022-08-17 浏览:140
楼主
apolloh
下面介绍Excel中可用于部署定制的三种方法:工作簿、模板、加载项。
分发工作簿
到目前为止,我们所创建的Excel解决方案都可以称之为“工作簿级的部署”,每个创建的工作簿都以xlsx或xlsm(启用宏)的文件格式保存,这是最常用的格式。所有必需的xml和VBA代码都保存在这样的文件中。
与其它部署方法相比,工作簿级部署有很多优势,只需要简单地将工作簿发送给用户。最终用户只需要使用安全设置许可运行任何代码,并且VBA代码能够正确地随环境而变化调整,例如可变的文件路径。但这种部署方法也存在缺点,最大的问题是文件的维护,因为它违反了最佳的实践原则:逻辑与数据分离。还有一个缺点是会导致大量相同定制工作簿的副本,这样很难再更新代码。
使用模板
将文件存储为模板,这样可以在指定的内在结构上快速创建新文件。
模板的目的是在调用模板文件时,提供“新鲜干净的”工作簿,简单到只需开发者正确地设置工作簿,然后将其保存为模板。一旦将文件安装到最终用户的模板(templates)文件夹中,只需简单地选择“Office菜单——新建——我的模板”,然后双击合适的文件,就会按所选模板创建新工作簿。应该为新文件提供新名称,以免覆盖模板。
创建模板比想象的更容易。下面来创建模板文件,使用以前的示例editBox – Rename Worksheet.xlsm。打开该文件,选择“Office菜单——另存为”,从“保存类型”下拉列表中选择“Excel启用宏的模板”并提供文件名,将其保存到默认的目录下。在Windows XP中,保存模板的缺省目录为:
就这么简单!关闭该文件。
接着,单击“Office菜单——新建”,在“我的模板”中选择并打开刚保存的文件。文件打开后,看起来像保存时的样子,但注意到应用程序标题栏中文件的名字,在模板文件名后自动添加了数字1,并且没有扩展名。如果此时再以该模板新建文字,添加的数字将递增。

 
实际上,因为该文件还没有保存,所以缺少扩展名。一旦单击“保存”按钮,就会提示输入文件名和选择类型。该文件不会覆盖模板文件。
由于能够将模板存储在用户自已的模板目录里或者网络目录里,所以可以容易地发布和更新工作簿模板,确保都从模板中创建所有的新文件。
然而,如果模板使用了VBA,那么要保证在基于该模板创建的文件中VBA仍然起作用,必须保存为启用宏的工作簿,否则会删除VBA代码。
创建和部署加载项
加载项将数据与代码分离,并且加载项能够使定制对所有的文件都可见并可访问。
下面,以前面文章中的示例dynamicMenu-CreateFromTemplate.xlsm来介绍Excel中加载项的构建。
当准备转换某文件为加载项时,确保所有的VBA代码无缝地转移。如果文件中含有VBA代码,那么需要检查代码中ThisWorkbook的引用,以及子过程和函数前面没有加上关键字Public或Private。
因为加载项主要是xlsm文件,这些文件在代码中大都引用ThisWorkbook对象,这对于代码和数据都在相同的工作簿中没有任何问题,但是一旦该文件被转换成加载项,将要处理的数据几乎不会存储在实际的加载项中。因此,最好的方法是加载项仅仅作为代码的容器。这样,就不会担心在更新加载项时会覆盖掉用户设置和数据。
现在,打开dynamicMenu-CreateFromTemplate.xlsm文件,并打开VBE,搜索代码中的ThisWorkbook,然后决定是否应该将其替换为ActiveWorkbook。注意,大多数工作簿中的代码的目标是处理在活动工作簿(ActiveWorkbook)中的数据,而不是代码所在的工作簿(ThisWorkbook)。
然而,还需要注意代码中潜在的对ThisWorkbook对象的引用。
其次,需要注意区分Public、Private和不确定的过程和函数。默认情况下,所有没有加上Public或Private关键字的过程和函数都被视为Public。这意味着,按下Alt+F8键后出现的“宏”对话框中可以看到它们。
使程序尽可能Private,是一个良好的编程实践。创建公共的过程,以便它们能够被用户运行,然而,如果过程仅从其它过程或函数中调用,那么它们应该被声明为Private。
代码编写并修改完成后,就可以将其转换为加载项了。
转换工作簿成为加载项是非常简单的。单击“Office菜单—另存为—其他格式”,在出现的对话框的保存类型中,选择“Excel加载宏”格式(*.xlam)。此时,文件夹位置改变至“AddIns”文件夹。对于本例来说,将其命名为“createFromTemplate.xlam”,单击“保存”按钮。
下面,来安装加载项。
前面已经在系统中创建了加载项,它被存储在本地的AddIns目录中。如果发送该加载项给其他用户,并且想他们能够尽可能容易地安装加载项,那么应该直接将该加载项保存到用户的AddIns文件夹中。在Windows XP中,该文件夹位于:
打开Excel,单击“Office菜单—Excel选项—加载项—转到”,出现如下图所示的对话框。

 
如果将加载项保存到本地的AddIns文件夹,那么该加载项就会出现在这个对话框中。如果在其他位置存储加载项,那么需要单击“浏览”按钮来找到该文件。为了完成加载项的装载,只需简单地选中加载项名称前的复选框,并单击“确定”。
正如所看到的,创建加载项能够共享定制,而不管打开了哪个文件。
那么,如何卸载和移除加载项呢?
当装载加载项时,需要内存,因此在需要时装载加载项,不需要时卸载是一项经常使用的操作。卸载加载项非常容易,但是移除加载项则需要更进一步的操作。
要卸载加载项,但仍需要在以后能够使用该加载项,则调出上图所示的对话框后,取消加载项名称前复选框的选择。此时,该加载项并没有从系统中移除,仍然存在于加载项列表中以便需要时装载。
要彻底从系统中移除加载项,首先按上述方法将其卸载。然后,关闭Excel,找到实际的加载项文件,将其移动到其他位置或者删除。接着,打开Excel并返回加载项对话框界面,你会注意到该加载项仍然在列表中,单击该加载项前面的复选框,将出会出一条消息,提供你将会从列表中删除该加载项。选择“是”,然后关闭Excel。这是重要是,因为当关闭Excel会在维护加载项列表的注册表中设置修改。

如果需要在加载项的工作表中添加一些数据以便于使用,那该怎么办呢?此时,可以通过设置加载项的IsAddin属性为False,临时打开该工作表。
在VBE中,选择加载项工程的ThisWorkbook模块,在工程属性窗口中,将IsAddin属性设置为False。
将IsAddin属性修改为False,告诉Excel将该文件视作常规工作簿。此时所有的工作表都将可见,并且能够被修改。要再次将该文件转换为加载项,只须按上面的操作将IsAddin属性设置为True。
注意,在定制功能区时使用Personal.xlsb工作簿往往会带来一些不可预见的问题,因此推荐使用单独的加载项来存储跨Excel工作簿共享的定制。
2楼
herelazy
黄版,我加载了一个别人定义的自定义函数的宏后,按照你的方法卸载,还是删除不了啊,在列表中依然存在!我应该怎么操作才能删了啦?

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap