VBA在限定Excel工作表用户按钮中的应用

作者:66WEN收集整理 来源:www.66wen.com 更新时间:2006年11月10日

摘 要 通过研究VBE及其下层对象的访问方法,本文详细地探讨了按钮过程的代码控制技术,从而实现了Excel测试软件中工作表用户按钮的执行限定。

关键词 按钮过程 VBE 下层对象 代码限定

1 引言

作为一个优秀的表格处理软件和系统开发平台,Excel拥有许多无可替代的优势。基于Excel环境开发的管理信息系统,具有操作直观性强、开发周期短的特点,因此形成了熟悉Excel操作的广大用户。为了保证开发系统的正常渠道流通及著作者利益,必须保护系统的使用权限,本文通过VBA的开发应用,提出了一种Excel工作表用户按钮的限定方法,以此来完善其系统测试软件的功能。

2 限定按钮执行及其对应过程代码

限定工作表用户按钮的执行包括两个方面的含义,即限定其按钮对象的显示及其指定宏过程代码的有效性,两者结合在一起加以实现,才能起到既展现软件功能,又真正限制其过分执行操作的作用,从而体现对用户软件的测试目的。

2.1 查找按钮执行过程代码

限定按钮对象及其执行代码,首要的问题便是获得其对应的执行代码过程名,并在当前工程的所有代码模块中查找其代码位置。

实践表明,按钮对象与图形图像和艺术字体一样,都属于Shape形状对象,它们都有其对应的OnAction属性,代表其被指定的宏过程代码名称。需要指出的是窗体类型按钮对应的宏过程代码一般位于工程的标准模块中,而ActiveX按钮过程代码则位于工作表代码模块中,且其对应的正确执行过程名为其按钮名与相应的事件名的连接串。为了查找某个按钮对应的过程代码,需要对VBE(Visual Basic 编辑器)的下层对象VBComponents进行搜索。VBComponents对象代表VBE编辑器下的各个代码模块VBComponent。通过对某一VBComponent的下一层对象CodeModule的相关属性的访问,可以获得诸如模块代码总行数等信息,也可以通过其Find方法查找指定内容的代码行。下面即为查找按钮过程、处理按钮过程代码的算法代码。

SheetsCount = ActiveWorkbook.Worksheets.Count

'对所有工作表中的所有按钮对象循环

For i = 1 To SheetsCount

Set MySheet = Worksheets(i)

MySheet.Activate

For Each sh In MySheet.Shapes

sh.Visible = True

sh.Select

'取得选定对象所对应的过程名

MyProname = sh.OnAction

'对于ActiveX按钮,则只取得其onClick事件过程名

If sh.Type = msoOLEControlObject Then

MyProname = sh.Name & "_Click"

End If

……

' StartLine、StartCol为设置查找按钮过程名的开始行、列序号,并在代码查找成功时' 返回所在的代码行、列序号

StartLine = 1

StartCol = 1

Set MyCoponent = Application.VBE.ActiveVBProject.VBComponents

'在各代码模块中查找按钮过程

For Each ch In MyCoponent

If sh.Type = msoOLEControlObject And ch.Name <> sh.Parent.CodeName Then

GoTo Label4

End If

'本代码模块的代码总行数

LinesCount = ch.CodeModule.CountOfLines

Endline = LinesCount

'忽略注释行,查找正确的过程头部位置

Do While ch.CodeModule.Find("Sub " & MyProname & "()", StartLine, StartCol, Endline, 1, False, False) And Left(Trim(ch.CodeModule.Lines(StartLine, 1)), 1) = "'"

StartLine = StartLine + 1

StartCol = 1

本篇文章共4页,此页为首页 下一页

自动摘要
摘要通过研究VBE及其下层对象的访问方法,本文详细地探讨了按钮过程的代码控制技术,从而实现了Excel测试软件中工作表用户按钮的执行限定。关键词按钮过程VBE下层对象代码限定1引言作为一个优秀的表格处理软件和系统开发平台,Excel拥有许多无可替代的优势。2.1查找按钮执行过程代码限定按钮对象及其执行代码,首要的问题便是获得其对应的执行代码过程名,并在当前工程的所有代码模块中查找其代码位置。
关键词
按钮 模块 代码 查找 限定 对应 下层 对象
版权申明: 本网站所有内容,未经注明的,版权一律属于免费论文网(66wen.com)制作署所有。转载引用本网站的原创文章,请务必注明信息来源,标明“免费论文网(66wen.com)”字样。
免费论文网(66WEN.com)依法保护知识产权,如果我们的文章有涉及或侵犯您的有关权益,请即时与我们联系, 注明网址及文章,我们会即时处理或删除, 感谢您的合作!
免责声明 | 关于我们 | 广告联系 | 帮助设置 | 网站导航 | 发表服务 | 共同合作
皖ICP备案许可06002111
免费论文网(www.66wen.com) 版权所有 copyright 2005--2008,All Rights Reserved