- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IVBA代码封装过程
VBA代码封装过程
一、函数和子过程的封装过程
二、封装后函数和子过程的调用
三、窗体的封装和调用
四、com加载项的制作
五、利用com加载项制作功能区
如果你写VBA代码只是给自己使用或者不介意和别人共享代码,那么就用不到封装。
我们一般用VB6.0作为VBA代码的封装工具,VBA代码的封装在我理解就是将VBA代码修改成VB6.0能运行的代码,然后利用VB6.0可以制作dll文件的特点将所有代码封装在dll文件中,最后我们可以通过安装加载项或者引用的方式在工作表界面或VBA界面调用其中的函数、子过程和窗体。下面让我们具体看下VBA代码的封装过程(封装调用环境:xp系统,excel2007,VB6.0):
一、函数和子过程的封装过程
函数和子过程也就是function过程和sub过程。封装的过程如下:
1、在vba编写代码,此次实验的代码如下,包含一个函数过程和一个子过程:
Function ceshi(a, b)
ceshi = a + b
End Function
Sub ceshi1()
MsgBox Application.Name
End Sub
2、打开VB6.0,新建工程,选择ActiveX dll,然后点打开。
3、点打开后在该工程中可以看到工程自带一个类模块,可以修改工程名字和类模块名字,也可以选择默认的工程名和类模块名,修改工程名和类模块名的过程如下,在VB6.0界面右边工程资源管理器窗口(如果没看见该窗口,可点击菜单栏中“视图”菜单的工程资源管理器命令调用)选择工程名(类模块名),然后在下面属性窗口“名称”一行修改成自己想要的名称,这里我们将工程名修改成fengzhuang,类模块名修改成cls1
4、右键点击类模块,在弹出的快捷菜单中选择查看代码,然后将VBA代码复制到类模块代码窗口中,部分代码要稍作修改,改成VB6.0能识别的代码。如上面的子过程中出现了application对象,代表excel应用程序,但是在vb6.0直接这样写会出现错误,VB6.0并不能识别这就是一个excel应用程序对象,就像我们在VBA中直接写Dictionary(字典对象)和regexp(正则对象)一样,VBA并不能识别,要VBA能识别这两个对象,要么是创建新的对象(前期绑定和后期绑定),要么是获取已有的对象(前期绑定和后期绑定),因为我们在VBA中运行代码时,excel应用程序已经存在了,所以我们只需要获取已有对象即可。下面介绍前期绑定和后期绑定修改我们的代码。
A、前期绑定。在VB6.0最上面工程菜单中点击引用,在弹出的引用对话框中选择microsoft excel 12.0 object library,中间的数字因为安装版本的不同会有变化,2003是11.0、2010是14.0,尽量选择最高版本的,子过程代码无需修改。
B、后期绑定。后期绑定比较方便,不需要在VB6.0中设置引用,只需要修改子过程的代码即可。修改如下,中间用了getobject函数用于获取excel应用程序对象:
Sub ceshi1()
Set a = GetObject(, excel.application)
MsgBox a.Name
Set a = Nothing
End Sub
在这里个人推荐使用后期绑定的方法修改代码,其实还有一种方法也可以使代码正常运行,无须设置引用,也无须用getobject获取对象,只需要为子过程设置一个object参数,然后在VBA中调用的时候向子过程传递应用程序这个参数即可。在VB6.0的代码如下:
Sub ceshi1(obj1 as object)
MsgBox obj1.Name
End Sub
在vba中调用ceshi1子过程时向ceshi1传递参数application,写成ceshi1(application)。
5、生成dll文件。点击vb6.0 文件菜单中生成dll命令生成dll文件
最后还要提到的一点是,因为上面测试用的代码比较简单,没有讲到向函数传递对象时代码的封装过程,这里简单介绍下,比如在VBA中函数 function ab(rng as range)在VB6.0中应该怎样写呢,第一种是先设置引用microsoft excel 12.0 object library,然后将VBA函数代码直接复制到VB6.0即可。第二种不需要设置引用,直接修改函数将range改成object即可,function ab(rng as object),在后期调用函数的时候直接传递单元格对象。
至此,函数和子过程的代码封装就讲完了。
二、封装后函数和子过程的调用
封装后的函数和子过程如何调用呢,具体过程如下(以前面的函数和子过程为例):
1、在工作表中调用函数
在工作表中可以调
您可能关注的文档
- IUnits16translationofthetextsandExercises.doc
- l事业单位考试应用文写.doc
- l事业单位考试材料分析与写作秘籍教材.doc
- IUnit6单元sectionB2a2e导学案.doc
- IUnit710课文翻译.doc
- IUI设计工作内容、工作流程、职责与规范等交接全过程.docx
- Iunit610课文翻译.doc
- Iu5教程.doc
- l事业单位考试综合写作理论.doc
- IUogxxx三星I617手机代号.doc
- 智慧园区整体规划方案(54页).pptx
- 08SG510-1 轻型屋面平行弦屋架(圆钢管、方钢管).docx
- 2025年广州市越秀区九年级中考语文二模试卷附答案解析.pdf
- 整式的加减(复习课)课件-人教版七年级数学上册.pptx
- 几何图形初步--6.1.1立体图形与平面图形--认识立体图形和平面图形(市级优质课赛课公开课一等奖)课件-人教版七年级数学上册.pptx
- 一元一次方程--5.3实际问题与一元一次方程方案选择问题(市级优质课赛课公开课一等奖)课件-新人教版七年级数学上册.pptx
- 整式--4.2整式的加法与减法(市级优质课赛课公开课一等奖)课件-人教版七年级数学上册.pptx
- 一元一次方程--5.1.1从算式到方程(市级优质课赛课公开课一等奖)课件-人教版七年级数学上册.pptx
- 一元一次方程--5.1.2等式的性质(市级优质课赛课公开课一等奖)课件-新人教版七年级数学上册.pptx
- 整式--4.1单项式和多项式(市级优质课赛课公开课一等奖)课件-人教版七年级数学上册.pptx
文档评论(0)