版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕毕 业业 设设 计计( 论论 文文)ExcelExcel 条件格式化工具的设计与实现条件格式化工具的设计与实现论文作者姓名:论文作者姓名:申请学位专业:申请学位专业:申请学位类别:申请学位类别:指指导导教教师师姓姓名名(职职称称):论文提交日期:论文提交日期:ExcelExcel 条件格式化工具的设计与实现条件格式化工具的设计与实现摘要摘要Excel 是一个在各个领域中被广泛应用的电子表格软件。通过它,我们可以很好的组织管理数据,对数据进行统计分析等。在实际应用中,我们发现经常需要根据某种特定的条件,特殊显示部分数据。虽然这种功能可以通过Excel 宏来实现,但每次编写类似的代码使人感觉跟不
2、方便。Excel 同其它Office 组件一样,提供了通过插件进行功能扩展的可能。通过编写和安装插件,我们可以几乎任意地扩展 Excel 的功能,为我们的工作提供极大的便利。本文详细介绍了一个 Excel 条件格式化软件的设计和实现。该软件使用 COM 组件技术,根据 Office 插件的接口要求,设计了一个 Excel 的插件。该插件在 Excel应用程序的窗口中增加一个工具栏,并在其上创建了一个按键,用于打开格式化设置窗口。软件可以对用户输入的、用字符串表达的判断条件进行计算,并根据计算结果,将满足条件的单元数据设置为用户选择的特殊格式(字体、颜色、字号、修饰等)关键词:关键词:Excel
3、 插件;COM 组件;接口The Design and Implementation of the Conditionally Formatting Tool for ExcelAbstractExcel is an electronic sheet software which is extensively used in various fields. By using it, we can organize and manage data, statistically analysis data easily. In practical applications, we need it
4、usually need to specially show some data under certain conditions. This function can be achieved by using Excel macros. However,such a method is inconvenient in writing similar codes in each time. Excel, as long as other Microsoft Office softwares, povides a standard plug-in interface, also called a
5、dd-in, to allow users to expand its functionalities. By writing addins for Excel, we can almost unlimitedly to expand its functionality and makes our work more easily and effectively. This paper introduces the design and implementation of an Excel conditional formatting addin, which is implemented b
6、y the COM component technique according to the interface requirements of Excel. The conditional formatting addin adds a new Toolbar into Excel, on which there is a button to be used to open the format setting dialog. The software can calculate the results of the condition expressions inputted by the
7、 user in the form of string, and according to the result, it sets the format of the cells matching the use-defined condition to special formats (font, color, font size and decoration) that was inputted by the user.Key words: Excel Addin; COM Component; Interface目目 录录 论文总页数:23 页1 引言 .12 COM 组件的实现技术 .
8、12.1 COM 组件技术.12.2 接口 .22.3 插件技术 .32.4 EXCEL 对象模型.. VB 编写组件基本介绍.9.93 EXCEL 条件格式化工具的具体实现 .123.1 插件接口方法 .123.2 EXCEL插件的实现.13.13.13参考文献.21致 谢.22声 明.23第 1 页 共 23 页ExcelExcel 条件格式化工具的设计与实现条件格式化工具的设计与实现1 1 引言引言我们生活的这个世界是丰富多彩的,几乎所有的知识都来自于视觉。也许无法记住一连串的数字,以及它们之间的关系和趋势。但是可以很轻松地记住一幅图画或者一个曲线。Exce
9、l 就具有许多高级的制图功能,同时使用起来也非常方便。它不仅可以用来制作电子表格、完成许多复杂的数据运算,还可以进行数据的分析和预测。Excel 文档是实际工作学习中最为常用的文档格式之一,为了增强 Word、Excel 等软件的自动化能力,人们开发了各种提高办公效率的软件,它们大多数实用、专业性强。为了避免用户做大量重复性的工作,提高Office 办公效率,达到提高其实用功能的目的,可根据具体工作内容要求,编写出最具本地化、个性化、最合适的软件。2 2 COMCOM 组件的实现技术组件的实现技术2.12.1 COMCOM 组件技术组件技术COM 是微软公司为了计算机工业的软件生产更加符合人类
10、的行为方式开发的一种新的软件开发技术。在 COM 构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM 与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。COM 是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定义的 COM 组件就如同开发动态的,面向对象的 API。多个 COM 对
11、象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft 的许多技术,如 ActiveX, DirectX 以及OLE 等都是基于 COM 而建立起来的。并且 Microsoft 的开发人员也大量使用 COM组件来定制他们的应用程序及操作系统。COM 所含的概念并不止是在 Microsoft Windows 操作系统下才有效。COM 并不是一个大的 API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM 方法” 。一个应用程序通常使由单个的二进制文件组成的
12、。第 2 页 共 23 页当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。操作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。目前这种状况已经发生变化。开发人员开始将单个的应用程序分隔成单独多个独立的部分,也既组件。这种做法的好处是可以随着技术的不断发展而用新的组件取代以有的组件。此时的应用程序可以随新组件不断取代旧的组件而渐趋完善。而且利用已有的组件,用户还可以快速的建立全新的应用。传统的做法是将应用程序分割成文件,模块或类,然后将它们编译并链接成一个单模应用程序。它与组件建立应用程序的过程(称为组件构架)有很大的不同。一个组
13、件同一个微型应用程序类似,即都是已经编译链接好并可以使用的二进制代码,应用程序就是由多个这样的组件打包而得到的。单模应用程序只有一个二进制代码模块。自定义组件可以在运行时刻同其他的组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。COM 即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。使用组件的优点:组件架构的一个优点就是应用可以随时间的流逝而发展进化。除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。使用组
14、件的种种优点直接来源于可以将它们动态的插入或卸出应用。为了实现这种功能,所有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而消息隐藏则是动态链接的一个必要条件。2.22.2 接口接口由于组件向外部隐藏了其内部的细节,因此客户要使用组件时就必须通过一定的机制,也就是说要通过一定的方法来实现客户与组件之间的通信,这就需要接口。所谓接口就是组件对外暴露的、向外部客户提供服务的“连接点” 。外部的客户见不到组件内部的细节,它所能看到的只是接口,客户也是通过接口来获取组件提供的服务。这有点像 OSI 网络协议分层模型
15、,每一层就像一个组件,它内部的实现细节对于其他层是不可见的;而每一层通过“服务接入点”向其上层提供服务,这就像这里所说的接口。一般来说,接口总是固定的,也是公开的。组件的开发人员要实现这些接口,而客户则通过接口获得服务。正是接口的这种固定和公开,才使得组件和客户能够在不了解对方的情况下达成一致。第 3 页 共 23 页接口提供了两个不同对象间的一种连接。实际上计算机程序是通过一组函数而连接起来的。这组函数实际上就定义了程序中不同部分的接口。DLL 的接口就是它所输出的那些函数。COM 中的接口也涉及到一组由组件实现并提供给客户使用的函数。对于 COM 来说,接口是一个包含一个函数指针数组的内存
16、结构。第一个数组包含的是一个由组件所实现的函数的地址。对于 COM 而言,接口就是此内存结构,其它东西均是一个 COM 并不关心的实现细节。接口的作用:在 COM 中接口就是一切。对于客户来说,一个组件就是一个接口集。客户只能通过接口才能同 COM 组件打交道。从整体上讲,客户对于一个组件可以说是知之甚少的。在某些情况下,客户甚至不必知道一个组件所提供的所有接口。可复用应用程序架构:说组件仅仅只是接口的实现细节当然有点言过其实。不管怎么说,一个未被实现的接口实际上什么也不能完成。但是组件可从应用程序中删除并可用另外一个组合来取代之。只要新的组件支持同组件相同的接口,那么整个应用程序将仍然能够工
17、作。单个的组件并不能对整个应用程序产生决定的作用。相反,用以连接组件的接口将对整个应用程序产生决定性的作用。只要接口保持不变,那么组件可以任意地更换。接口同木板房中的大梁非常类似。这些大梁决定了整个房屋的结构。同样可以将应用程序所用的组件替换掉,这样应用程序的行为将会发生变化,但从结构上讲,整个应用程序并没有发生任何变化。使用组件来构造应用程序的最大的优点在于可以复用应用程序的结构。如果接口设计得好的话,将可以得到可复用极高的结构。当然使用接口除了可以设计出可复用的结构外,还有其它若干优点。COM 接口的其它优点:接口使得客户可以用同样的方式来处理不同的组件。这种能力就被称作是多态。这些优点是
18、通过接口将某个特定的行为封闭起来而获得的。2.32.3 插件技术插件技术插件是一类特殊的组件。它的目的不是为一般应用程序使用,而是专为特定的应用程序使用。插件一般在宿主应用程序上添加控制项,如菜单、工具按键等。插件响应宿主程序中对这些项目的操作,并对宿主程序中的数据进行特定操作。插件是一种遵循一定规范的应用程序接口编写出来的程序。插件是一类特殊的组件。它的目的不是为一般应用程序使用,而是专为特定的应用程序使用。第 4 页 共 23 页插件的本质是在不修改程序主体的情况下对软件功能进行加强,当插件的接口被公开时,任何公司或个人都可以自己制作插件来解决一些操作上的不便或增加一些功能。插件还可以支持
19、多人合作开发,不同的功能可以由不同的人来完成,而且由于不同插件之间互不影响,方便程序的调试和纠错。插件一般在宿主应用程序上添加控制项,如菜单、工具按键等。插件响应宿主程序中对这些项目的操作,并对宿主程序中的数据进行特定操作。插件类型从广义的范围来看,插件有以下三种类型:1类似批命令的简单插件。事实上这种插件的自由度非常低。运行这种插件后,会一步步要求用户进行选择/输入,最后根据用户的输入来执行一系列事先定义好的操作。这种插件一般是文本文件。功能比较单一,可扩展性极小。优点是插件做起来非常方便,即使是对程序设计了解不多的人也可以制作。2使用一种特殊的脚本语言来实现的插件。这种插件比较难写,需要软
20、件开发者自己制作一个程序解释内核。比如微软惹了很多麻烦的宏就是这种类型的。有一套著名的 Office 辅助工具就是完全用 Office 内置的 VBScript 写成的。这种方法的优点在于无需使用其它工具来制作插件,软件本身就可以实现,普遍出现于各种办公自动化软件中。3利用已有的程序开发环境来制作插件。例如 PhotoShop 等软件使用的方法。使用这种方法的软件在程序主体中建立了多个自定义的接口,使插件能够自由访问程序中的各种资源。这种插件的优势在于自由度极大,可以无限发挥插件开发者的创意,这种插件是狭义范围的插件,也是真正意义上的插件。而这种插件机制的编写相对复杂,对于插件接口之间的协调比
21、较困难。2.42.4 EXCELEXCEL 对象模型对象模型 ExcelExcel 对象模型的类以及之间的关系对象模型的类以及之间的关系Excel 组件中定义了大量的类。下图显示了我们在软件开发中使用到的一些主要的类和它们之间的关系。第 5 页 共 23 页ApplicationWorkBook*1WorkSheet*1Chart*1Range*1Font*11*1*1*1*1*图 1 Excel 对象模型片断.2 使用使用 ExcelExcel在 VB 应用程序中使用 Excel,实质是将 Excel 作为一个外部对象来引用,由 Excel 对象模型提供能从 VB 应用程序内
22、部来程序化操纵的对象以及相关的属性、方法和事件。为了能从 VB 应用程序中访问 Excel 丰富的内部资源,使Excel 应用程序运行得更快,需要在 VB 工程中添加对 Excel 类型库的引用。具体步骤如下:a)从 VB6工程菜单中选择引用;b) 在引用对话框中选择 Excel 类型库:Microsoft Excel 11.0 Object Library;c)单击左边小方框,使之出现符号;d)按确定退出。注:要想在 VB 应用程序中调用 Excel,你的计算机系统中必须安装Excel。 引用引用 ApplicationApplication 对象对象Application 对象是 Exce
23、l 对象模型的顶层,表示整个 Excel 应用程序。在 VB 应用程序中调用 Excel,就是使用 Application 对象的属性、方法和事件。为此,首先要声明对象变量:Dim VBExcel As Object 第 6 页 共 23 页或直接声明为 Excel 对象:Dim VBExcel As Excel.Application 在声明对象变量之后,可用 CreateObject 函数或 GetObject 函数给变量赋值。前者创建一个新的 Excel 实例,后者取得当前打开的 Excel 实例。两个函数均返回对 Excel 的 Application 对象引用。a)用 CreateO
24、bject 函数生成新的对象引用:Set VBExcel=CreateObject (Excel.Application) 字符串Excel.Application是提供 Excel 应用程序的编程 ID。b)用 GetObject 函数打开已存在的对象引用:Set AppExcel=GetObject(SAMP.XLS, Excel.Application) 上面语句打开文件 SAMP.XLS。.4 ApplicationApplication 对象常用的属性、方法对象常用的属性、方法Visible 属性取 True 或 False,表明 Excel 应用程序是否可见。Lef
25、t,Top属性 Excel 窗口的位置; Height, Width 属性 Excel 窗口的大小;WindowState 属性 指定窗口的状态,取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。Quit 方法 退出 Microsoft Excel;Calculate 方法 重新计算所有打开的工作簿、工作表或单元格。Evaluate 方法 求值数学表达式并返回结果。示例 1:求值数学表达式:Dim VBExcel As ObjectSet VBExcel=CreateObject (Excel.Application)X=VBExcel. Eva
26、luate (3+5*(cos (1/log (99. 9) 在 VB 应用程序中使用 Excel 应用程序,就是通过 Application 对象的属性、方法来获得其它 Excel 对象,如工作簿、工作表、单元等待。下面分类给出其中常用的属性和方法。第 7 页 共 23 页.5 使用工作薄使用工作薄Workbook 对象代表 Excel 应用程序中当前打开的一个工作簿,包含在Workbooks 集合中。可以通过 Workbooks 集合或表示当前活动工作簿的 Active Workbook 对象访问 Workbook 对象。常用的方法有:Add 方法 创建新的空白工作簿,并将
27、其添加到集合中。 Open 方法 打开工作簿。 Activate 方法 激活工作簿,使指定工作簿变为活动工作簿,以便作为 Active Workbook 对象使用。 Save 方法 按当前路径和名称保存现有工作簿(如是首次保存,则将其保存到缺省名称中,如 BOOK1.XLS)。 SaveAs 方法 首次保存工作簿或用另一名称保存工作簿。 Close 方法 关闭工作簿。 PrintOut 方法 打印工作簿,语法为:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)可选参数:From:打印的起始页号。如省略将从起始位置开始打
28、印。To:打印的终止页号。如省略将打印至最后一页。Copies:要打印的份数。如省略将只打印一份。Preview:如果为 True 则 Excel 打印指定对象之前进行打印预览。如果为False,或省略则立即打印该对象。Printer:设置活动打印机的名称。ToFile:如果为 True 则打印输出到文件。Collate:如果为 True 则逐份打印每份副本。 下面语句将活动工作簿的 2 到 5 页打印 3 份:ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 示例 2:生成、保存、关闭工作簿第 8 页 共 23 页Dim VBExcel As Ex
29、cel.ApplicationSet VBExcel= CreateObject(Excel.Application)With VBExcel.Workbooks.AddWith ActiveWorkbook.Save AsC: Temp OUTPUT.XLS.CloseEnd WithQuitEnd With .6 使用工作表使用工作表Sheets 集合表示工作簿中所有的工作表。可以通过 Sheets 集合来访问、激活、增加、更名和删除工作表。一个 Worksheet 对象代表一个工作表。Worksheets 属性 返回 Sheets 集合。 Name 属性 工作表更名。 A
30、dd 方法 创建新工作表并将其添加到工作簿中。 Select 方法 选择工作表。 Copy 方法 复制工作表。 Move 方法 将指定工作表移到工作簿的另一位置。 Delete 方法 删除指定工作表。 PrintOut 方法 打印工作表示例:将 C 盘工作簿中的工作表复制到 A 盘工作簿中Dim VBExcel As Excel.ApplicationSet VBExcel=CreateObject(Excel.Application) With VBExcel.Workbooks.Open C:TempOUTPUT.XLS.Workbooks.OpenA:OUTPUT1.XLS.Workbo
31、oks(OUTPUT.XLS).Sheets (Sales).Copy.Workbooks(OUTPUT1.XLS).Workbooks(OUTPUT1.XLS).Save.Workbooks(OUTPUT.XLS).Close.Workbooks(OUTPUTI.XLS).Close第 9 页 共 23 页.QuitEnd With 使用单元范围对象(Range):Range 对象代表工作表的某一单元格、某一行、某一列、某一选定区域或者某一三维区域。Range 属性 Range (arg)其中 arg 为 A1-样式符号,表示单个单元格或单元格区域。Range 对象的主要属性和方法包括:Ce
32、lls 属性 Cells (row, col )(其中 row 为行号,col 为列号)表示单个单元格。 ColumnWidth 属性 指定区域中所有列的列宽。 Rowl3eight 属性 指定区域中所有行的行宽。 Value 属性 指定区域中所有单元格的值(缺省属性)。 Formula 属性 指定单元格的公式,由 A1-样式引用。 Select 方法 选择范围。 Copy 方法 将范围的内容复制到剪贴板。 C1earContents 方法 清除范围的内容。 Delete 方法 删除指定单元范围。 以上简要介绍了 Excel 对象模型中部分对象及其属性和方法,更详细的信息可参阅 Excel 2
33、000 帮助中的Microsoft Excel Visual Basic 参考一节的内容。实际上,Microsoft Office 家族的 Word,PowerPoint, Access 和Project 等应用程序都可以在 VB 应用程序中调用,其原理和步骤完全相同,只是其对象模型有所不同而已。2.52.5 VBVB 编写组件基本介绍编写组件基本介绍 在在 VBVB 中编写中编写 COMCOM 组件组件1、新建 ActiveX DLL 工程第 10 页 共 23 页图 2 ActiveX DLL 工程注意:该类型工程缺省添加的不是窗体,而是类模块。2、修改工程属性菜单:工程属性图 3 菜单:
34、工程属性其中,工程名称就是组件的名称。3、修改类模块的性质第 11 页 共 23 页图 4 模块的性质说明:其中的 Instancing 是组件对象的实例化方式。5-MultiUse:可以创建多个实例。1-Private: 私有对象。不能在外部程序中创建它的实例,但公开其接口。4、定义对象的属性和方法与一般 VB 类相同。如添加以下代码,定义了该对象缺省接口的 Hello 方法:Public Sub Hello(sMsg As String)MsgBox sMsgEnd Sub如果定义为 Private,则不是接口的方法,而是私有对象中的方法,对外不公开。5、编译生成 COM 组件菜单:文件生
35、成6、调试和使用该 COM 组件(1) 在当前工程组中添加一个标准 EXE 的 VB 工程。菜单:文件添加工程。第 12 页 共 23 页(2) 在新工程中引用前面的 ActiveX DLL 工程。COM 组件工程的名称将出现在组件选择对话框的列表中图 5 引用工程(3)将新工程设置为启动工程。图 6 启动工程(4)在新工程中添加代码,创建组件对象,调用其 Hello 方法。Private Sub Command1_Click()Dim myVBObj As MyVBCom.VBComObjectSet myVBObj = New MyVBCom.VBComObjectmyVBObj.Hell
36、o Hello world.第 13 页 共 23 页End Sub(5)设置断点,运行。3 3 ExcelExcel 条件格式化工具的具体实现条件格式化工具的具体实现3.13.1 插件接口方法插件接口方法当 VB 运行时,在 Add-In 菜单中装载组件以后,VB 就会调用组件中IDTExtensibility 对象中的 OnConnection 方法。在 OnConnection 方法里定义Application 对象变量,并调用 CommandBars.Add 方法,就可在程序运行时加载工具栏。在“引用”对话框中选择“Microsoft Office 8.0 Object library
37、”复选框,可以通过“对象浏览器”访问并浏览各种命令条对象。因为菜单和工具栏属于相同的对象库,它们都将通过 CommandBarControl对象被引用。一个菜单条命令条可以包括几个菜单项,每个菜单项本身也是一个命令条,而且它又可以包括若干个菜单命令,每条命令依然是一个命令条。利用这种模式可以很容易地在开发环境中放置外接程序。使用 commandBars 集合对象用外接程序来添加命令栏和控件。在OnConnection 事件过程定义 Application、commandbars 对象变量,此过程创建新的命令条按钮,并返回对它的对象变量,并定义 commandbar 上按键的事件。3.23.2
38、ExcelExcel 插件的实现插件的实现.1 插件实现的功能插件实现的功能(1)在 Excel 中建立 3 列:姓名,平时,考试。并输入模拟数据。(2)选择所有学生姓名单元;(3)点击插件的按键,出现对话框。(4)在其中输入格式化的条件(类似于 Excel 的公式,只是将相对单元位置的表示方式,加了一个符号。如:sum(A1:D1)=4, 表示将 A1 到 D1 单元的数据相加,判断其和是否大于等于 4。相对的含义是:对当前单元而言,求和的是 A1 到 D1。如果当前单元的行列加了 1,则求和的将是 B2 到 E2。(即,求和的单元相对于当前单元的偏移量不变)。本例中输入:B
39、2*30/100+C2*70/10060(5)点击字体按键,选择字体、颜色等;第 14 页 共 23 页(6)点击填充按键,选择填充色和模式;(7)点击“格式化”按键。.2 具体功能实现具体功能实现 设计器设计器图 7 设计器 窗体的实现窗体的实现图 8 窗体设置字体按钮:第 15 页 共 23 页图 9 设置字体按钮选择字体Private Sub cmdSetFont_Click()选择一个临时单元Dim rng As RangeSet rng = mExcelApp.Selection保存其原有字体设置Dim size
40、, italic, underline, strikethrough, bold, color, style, nameitalic = rn使用 Excel 的标准对话框设置其字体mExcelApp.Dialogs(xlDialogFontProperties).Show保存其字体设置mFonts恢复其原有字体设置第 16 页 共 23 页End Sub单元填充按钮:图 10 单元填充按钮Private Sub cmdBackGround_Click()选择一个临时单元Dim rng As RangeSet rng = mExcelApp.Selection保留原有设置Dim clrInde
41、x, pClrIndex, p, pClr设置新的填充模式mExcelApp.Dialogs(xlDialogPatterns).Show保存设置恢复临时单元以前设置第 17 页 共 23 页End Sub保存单元格式设置的变量Private Sub cmdCancel_Click()Unload MeEnd SubPrivate Sub cmdFormat_Click()FormatSelectedCells Trim(txtFormula)MsgBox 格式化完成!Unload MeEnd Sub 类模块设计:类模块设计:(类模块设计中包括“段”类和公式类)1
42、段类表示公式的一部分, 可能是字符串, 也可能是一个相对的位置.职责: 将相对位置转换为当前的绝对位置根据当前单元相对于公式原始位置的偏移, 计算绝对位置2 公式类职责:1. 将公式字符串转换为段对象(见: CSegment), 以表示其中的相对单元位置2. 根据提供的当前行列号, 得到当前的公式字符串.Option Explicit公式的原始位置Private mAbsRow As LongPrivate mAbsCol As Long组成公式的段Private mSegments As Collection设置公式字符串Public Sub SetFormula(ByVal sFormul
43、a As String, ByVal absRow As Long, ByVal absCol As Long)这个公式字符串有很多信息类型、范围 释放原有的段集Set mSegments = Nothing第 18 页 共 23 页定义新的段集Set mSegments = New CollectionmAbsRow = absRowmAbsCol = absCol解析公式(查找其中的相对单元位置: 以开头的单元)主要是从上面的 公式字符串里提取我们需要的 相对位置的信息Dim i As Integer, sChar As String, sSeg As StringDim blnInBra
44、ce As Boolean标志: 当前字符位置是否在引号中Dim blnGettingRelativeCell As Boolean标志: 正在提取相对单元位置Dim seg As CSegmentFor i = 1 To Len(sFormula)sChar = Mid(sFormula, i, 1)Select Case sCharCase , 如果是引号blnInBrace = Not blnInBrace 是否在引号内标志取反Case 可能是相对单元位置If Not blnInBrace Then 不在引号嵌套中, 则确定是一个相对位置保存前面的段If sSeg ThenAddSegm
45、ent sSeg, blnGettingRelativeCellEnd IfsSeg = blnGettingRelativeCell = TruesChar = End IfEnd SelectIf blnGettingRelativeCell And sChar ThenIf Not IsPositionChar(sChar) Then如果遇到非位置字符,说明相对位置的字符串已经结束AddSegment sSeg, True清空 sSeg,为保存下一个段作准备第 19 页 共 23 页sSeg = blnGettingRelativeCell = FalseEnd IfEnd IfsSeg
46、 = sSeg & sChar 将当前字符保存到 sSeg 中Next保存最后一个段(如果有的话)If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfEnd Sub以上主要功能实现是:公式类字符串中的信息有很多类型、范围 需要从公式字符串里提取我们需要的相对位置信息。为相对位置的开始设置一个标记 并找到和判断相对位置信息进行保存。判断一个字符是否是表示单元位置的字符(字母或数字)Private Function IsPositionChar(sChar As String) As BooleanDim sTmp As Str
47、ingsTmp = UCase(sChar)If sTmp = A And sTmp = 0 And sTmp =4表示将 A1 到 D1 单元的数据相加,判断其和是否大于等于 4。我选择的单元可能是从 A1 到 D5 的 那么就要将公式分成 5 个 A1-D1; A2-D2; A3-D3 ;A4-D4 ;A5-D5;这 5 个范围分别进行上面的公式 再将这 5 个公式组合起来根据当前位置, 取公式字符串Public Function GetFormula(ByVal nRow As Long, ByVal nCol As Long) As StringIf mSegments.Count =
48、 0 Then Exit FunctionDim seg As CSegment, sFormula As StringFor Each seg In mSegmentssFormula = sFormula & seg.GetSegmentString(nRow - mAbsRow, nCol - mAbsCol)NextGetFormula = sFormulaEnd Function第 21 页 共 23 页结结 论论我们根据 COM 组件和 Office 插件编程原理开发了本软件,其中实现了对条件格式判断的功能。软件虽小,但基本上能够满足输入格式判断的功能。用户需要的条件各种各
49、样,有的是单个单元内的数值比较、有的是多个单元内的综合比较,比较方式可以用公式表示。但输入界面中只能输入指定的字符串。如何根据字符串进行单元内容的计算这是这个软件实现的难点。经指导老师王老师的帮助和讲解后终于可以完成输入格式判断的功能。由于时间仓促软件中还存在一些可以改进的地方。如:选择单元时只能选择列。如果要选择行,则在公式输入时的相对地址上就要相应变化。如果我们增加两个窗口按钮:一个行单元选择,一个列单元选择。这样就可以解决选择行比较时需要修改相对地址的问题。参考文献参考文献1 赵建敏,郭庆.Visual Basic 6.0 编程指南M.北京:航空工业出版社,1999。2 李鸿吉.Visu
50、al Basic 高级编程技术M.北京:科学出版社,2003。3 李怀明.Visual Basic6.0 中文版参考详解M.北京:清华大学出版社,1999。4 黄志峰.Visual Basic 高级编程实例精解M.北京:北京国防工业出版社,2001。5 戴特(Deitel,M.H)美.Visual Basic 6 大学教程M.北京:北京电子工业出版社,2003。6 卢毅.Visual Basic 实例教程M.北京:北京科学出版社,2001。7 布拉德利(Bradley,J.C.)美,米尔斯波(Millspugh,A.C.)美.Visual Basic 6.0 高级编程M.北京:清华大学出版社,
51、2003。8 张德强.Visual Basic 案例开发M.北京:中国水利水电出版社,2005。9 Dale Rogerson美.COM 技术内幕:微软组件对象模型M.北京:清华大学出版社,1999。第 22 页 共 23 页致致 谢谢本文是在王燚老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!第 22 页 共 23 页声声 明明本论文的工作是 2006 年 3 月至 2007 年 6 月在成都信息工程学院 系完成的。文中除了特别加以标注地方外,不包含他
52、人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定) 。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都信息
53、工程学院。特此声明! 作者签名: 年 月 日第 22 页 共 23 页 Its a wonder Retana wouldnt give us enough light to see the horses by, one picador said. He knows well be happier if we dont get too good a look at these skins, another pic answered. This thing Im on barely keeps me off the ground, the first picador said. Well, th
54、eyre horses. Sure, theyre horses. They talked, sitting their gaunt horses in the dark. Zurito said nothing. He had the only steady horse of the lot. He had tried him, wheeling him in the corrals, and he responded to the bit and the spurs. He had taken the bandage off his right eye and cut the string
55、s where they had tied his ears tight shut at the base. He was a good, solid horse, solid on his legs. That was all he needed. He intended to ride him all through the corrida. He had already, since he had mounted, sitting in the half-dark in the big, quilted saddle, waiting for the paseo, pic-ed thro
56、ugh the whole corrida in his mind. The other picadors went on talking on both sides of him. He did not hear them. The two matadors stood together in front of their three peones, their capes furled over their left arms in the same fashion. Manuel was thinking about the three lads in back of him. They
57、 were all three Madrile?os, like Hernandez, boys about nineteen. One of them, a gypsy, serious, aloof, and dark-faced, he liked the look of. He turned. Whats your name, kid? he asked the gypsy. Fuentes, the gypsy said.What he said. Am I sick?TH had settled it that Mr. Darcy would bring his sister to
58、 visit her the very day after her reaching Pemberley; and was consequently resolved not to be out of sight of the inn the whole of that morning. But her conclusion was false; for on the very morning after their own arrival at Lambton, these visitors came. They had been walking about the place with s
59、ome of their new friends, and were just returned to the inn to dress themselves for dining with the same family, when the sound of a carriage drew them to a window, and they saw a gentleman and lady in a curricle, driving up the street. Elizabeth, immediately recognising the livery, guessed what it
60、meant, and imparted no small degree of surprise to her relations by acquainting them with the honour which she expected. Her uncle and aunt were all amazement; and the embarrassment of her manner as she spoke, joined to the circumstance itself, and many of the circumstances of the preceding day, opened to
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论