VBA代码对象编程方法详解

上传人:汽*** 文档编号:470139819 上传时间:2023-11-09 格式:DOC 页数:24 大小:206.51KB
返回 下载 相关 举报
VBA代码对象编程方法详解_第1页
第1页 / 共24页
VBA代码对象编程方法详解_第2页
第2页 / 共24页
VBA代码对象编程方法详解_第3页
第3页 / 共24页
VBA代码对象编程方法详解_第4页
第4页 / 共24页
VBA代码对象编程方法详解_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《VBA代码对象编程方法详解》由会员分享,可在线阅读,更多相关《VBA代码对象编程方法详解(24页珍藏版)》请在金锄头文库上搜索。

1、VBA代码对象编程方法详解一、前言21.1 引用VBA扩展类库(Microsoft Visual Basic For Applications Extensibility 5.3)21.2 需要启用编程方式访问VBA项目(仅在EXCEL中需设定)2二、VBA的可扩展模型对象简介3三、工程对象(Project)43.1判断工程是否锁定43.2 获得工程名5四、部件对象(VBComponent)54.1 添加工程部件54.2 移除工程中部件64.3 列举部件名及类型信息74.4 判断部件是否存84.5 导入部件文件添加部件84.6 导出部件为部件文件8五、代码窗格对象(CodePane)95.1

2、显示代码窗格105.2 获取窗格所选代码行列信息10六、代码模块对象(CodeModule)116.1 获得指定行代码116.2 列举模块中所有过程及类型116.3 判断过程是否存在136.4 获得指定行所在过程名146.5 获取过程代码行数信息146.6 获取部件或模块中代码行信息166.7 获取工程代码行数信息186.8 代码模块中添加代码操作196.9 代码模块中插入代码操作196.10 代码模块中替换代码操作206.11 代码模块中删除代码操作216.12 添加事件过程代码操作226.13 查找代码获取相关信息23一、前言本文所说的VBA代码编程,即通过编程方法创建、删除或编辑VBA工

3、程部件、模块或代码程序对象,还可以通过VBA代码创建新的代码,以此可以实现VBA的二次开发。VBA代码编程,也就是所谓的VBA可扩展性。要实现VBA扩展功能,或者说实现对VBA代码的编程,我们必须事先完成以下相关设置。1.1 引用VBA扩展类库(Microsoft Visual Basic For Applications Extensibility 5.3)在ACCESS 2003中扩展库文件为:VBE6EXT.OLB,你可以在VBE(Visual Basic Editor即VB编辑器)窗口,点菜单 工具 引用,在 引用对话框 中钩,来手动引用该扩展类库,你也可以通过代码实现对其的引用。Di

4、m ref As Reference 申明引用类对象On Error Resume Next 避免因重复引用造成的错误提示通过扩展库标识号,主版本号,次版本号完成引用Set ref = References.AddFromGuid (0002E157-0000-0000-C000-000000000046, 5, 3)1.2 需要启用编程方式访问VBA项目(仅在EXCEL中需设定)在Excel 2003和更早版中,需设定允许对VBA项目的访问,否则将报错。ACCESS则不需对该项进行设定。点选菜单 工具(在Excel中,而不是在VBA编辑器中)宏安全性,在 安全对话框中,单击 可靠发行商 页,

5、点选 信任对于“Visual Basic项目”的访问 项(见下图)注册表键值:HKLMSoftwareMicrosoftOffice11.0ExcelSecurityAccessVBOM, 1, REG_DWORD键值为:1,则钩选;0,则取消钩选二、VBA的可扩展模型对象简介l Library VBIDE(扩展库)路径:C:Program FilesCommon FilesMicrosoft SharedVBAVBA6VBE6EXT.OLB 描述:Microsoft Visual Basic for Applications Extensibility 5.3l VBE(VB编辑器)指VB编

6、辑器,为根对象,其包含所有其它可在 Visual Basic for Applications 中表示的对象和集合。l VBProject(工程)VB工程(或称项目)中包含了所有的代码模块和部件。VB项目可包含若干个VB部件对象。l VBComponent(部件)代表包含在工程中的部件对象,如:类模块或标准模块。部件(VBComponent) 对象的 Type 属性:常数值描述Vbext_ct_StdModule1标准模块Vbext_ct_ClassModule2类模块Vbext_ct_MSForm3Microsoft 窗体(非ACCESS类窗体)l CodePane(代码窗格)用 CodeP

7、ane 对象来操作 CodePane 中可视文本的位置或者代码窗格中显示的文本选择。l CodeModule(代码模块)代码模块是VB部件VBA源代码,可用 CodeModule 对象来修改(添加、删除、编辑)与部件相关联的代码CodePane 或CodeModule内程序类别 (prockind)常数:常数值描述vbext_pk_Proc0指定所有过程除了Property 过程。vbext_pk_Let1指定一个赋值给属性的过程。vbext_pk_Set2指定一个给对象设置引用的过程。vbext_pk_Get3指定一个返回属性值的过程。以上为VBA的可扩展模型部分对象(非全部对象),其它模型

8、对象请参阅帮助。三、工程对象(Project)表示一个工程。可用 VBProject 对象设置工程的属性、访问 VBComponents 集合以及访问 References 集合。通常我们会用ActiveVBProject返回“工程”窗口中选定的工程,但在实际编程中,无论此工程是否被显式地选定,都只有一个工程是活动的。3.1判断工程是否锁定通过工程Protection属性,判断工程锁定状态。工程Protection 属性(只读),指示工程是否处于保护状态。返回的值为一事先定义好的常量,表示工程的状态。Protection属性常量:常数值描述Vbext_pp_none0常量代表指定的工程未被保护

9、。vbext_pp_locked1常量代表指定的工程是被锁住。 判断工程是否锁定自定义函数函数功能:判断工程是否锁定Public Function VBProjectlocked (Optional VBProj As VBProject = Nothing) As Boolean Dim Proj As VBProject 如未指定工程,则为当前工程 If VBProj Is Nothing Then Set Proj = VBE.ActiveVBProject Else Set Proj = VBProj End If 判断工程是否锁定 If Proj.Protection = vbext

10、_pp_locked Then VBProjectlocked = True Else VBProjectlocked = False End IfEnd Function3.1.2 调用自定义函数,判断当前工程是锁定示例 函数输出为真(True),否则当前工程锁定If VBProjectlocked = True Then MsgBox 工程已锁定 Else MsgBox 工程未锁定 End If3.2 获得工程名获得当前工程名四、部件对象(VBComponent)代表一个包含在工程中的部件,例如类模块或标准模块。使用 VBComponent 对象访问与部件关联的代码模块CodeModule

11、或改变部件的属性设置。4.1 添加工程部件向当前工程添加部件公用过程*公用过程:添加模块或指定名模块 ComponentType部件类型(可选参数),默认为标准模块 VBCompName部件名(可选参数),默认不指定部件名*Public Sub AddVBComponents (Optional ComponentType As vbext_ComponentType=1, _ Optional VBCompName As String = ) Dim VBProj As VBProject 申明工程(项目)对象 Dim VBComps As VBComponents 申明部件集合 设定为当前

12、工程 Set VBProj = VBE.ActiveVBProject设定为当前工程部件集合 Set VBComps = VBProj.VBComponents 判断是否指定部件名,未指定则按默认名建立指定类型部件 If VBCompName = Then VBComps.Add (ComponentType) Else VBComps.Add (ComponentType).Name = VBCompName End IfEnd Sub4.1.2 调用自定义过程,添加标准模块例一:以默认名添加标准模块Call AddVBComponents例二:以指定名“我的模块”添加标准模块Call Ad

13、dVBComponents(, 我的模块)4.1.3 调用自定义过程,添加类模块例一:以默认名添加类模块Call AddVBComponents(2)例二:以指定名“我的类模块”添加标准模块Call AddVBComponents(2, 我的类模块)4.1.4 调用自定义过程,添加(MSForm)窗体例一:以默认名添加MSForm窗体Call AddVBComponents(3)例二:以指定名“我的窗体”添加MSForm窗体Call AddVBComponents(3, 我的窗体)说明:这里窗体是指“Microsoft 窗体”,而非ACCESS通常意义所说的窗体,ACCESS窗体实际为ACCESS类对象,你可以通过CreateForm 方法创建一个ACCESS对象窗体。4.2 移除工程中部件 移除当前工程部件自定义过程*公用过程:移除指定部件或删除某类部件ComponentType部件类别(可选参数),默认为标准模块VBCompName部件名(可选参数),默认不指定部件名*Public Sub RemoveVBCompon

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 文学/艺术/历史 > 人文/社科

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号