版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计(论文)Excel条件格式化工具的设计与实现论文作者姓名:申请学位专业:申请学位类别:论文提交日期:Excel条件格式化工具的设计与实现摘要Excel是一个在各个领域中被广泛应用的电子表格软件。通过它,我们可以很好的组织管理数据,对数据进行统计分析等。在实际应用中,我们发现经常需要根据某种特定的条件,特殊显示部分数据。虽然这种功能可以通过Excel宏来实现,但每次编写类似的代码使人感觉跟不方便。Excel同其它Office组件一样,提供了通过插件进行功能扩展的可能。通过编写和安装插件,我们可以几乎任意地扩展Excel的功能,为我们的工作提供极大的便利。本文详细介绍了一个Excel条件格
2、式化软件的设计和实现。该软件使用COM组件技术,根据Office插件的接口要求,设计了一个Excel的插件。该插件在Excel应用程序的窗口中增加一个工具栏,并在其上创建了一个按键,用于打开格式化设置窗口。软件可以对用户输入的、用字符串表达的判断条件进行计算,并根据计算结果,将满足条件的单元数据设置为用户选择的特殊格式(字体、颜色、字号、修饰等)关键词:Excel插件;COM组件;接口The Design and Implementation of the Conditionally Formatting Tool for ExcelAbstractExcel is an electronic
3、 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 usually need to specially show some data under certain conditions. This function can be achieved by using Excel macros.
4、 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 add-in, to allow users to expand its functionalities. By writing addins for Excel, we can almost unlimitedly to expand i
5、ts 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 by the COM component technique according to the interface requirements of Excel. The conditional formatting addin adds a
6、 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 user in the form of string, and according to the result, it sets the format of the cells matching the use-defined cond
7、ition to special formats (font, color, font size and decoration) that was inputted by the user.Key words: Excel Addin; COM Component; Interface目 录 论文总页数:23页 TOC o 1-3 h z u HYPERLINK l _Toc175129103 1引言 PAGEREF _Toc175129103 h 1 HYPERLINK l _Toc175129104 2 Com组件的实现技术 PAGEREF _Toc175129104 h 1 HYPERL
8、INK l _Toc175129105 2.1 COM组件技术 PAGEREF _Toc175129105 h 1 HYPERLINK l _Toc175129106 2.2 接口 PAGEREF _Toc175129106 h 2 HYPERLINK l _Toc175129107 2.3 插件技术 PAGEREF _Toc175129107 h 3 HYPERLINK l _Toc175129108 2.4 EXCEL对象模型 PAGEREF _Toc175129108 h 4 HYPERLINK l _Toc175129109 PAGEREF _Toc175129109 h 4 HYPE
9、RLINK l _Toc175129110 PAGEREF _Toc175129110 h 5 HYPERLINK l _Toc175129111 PAGEREF _Toc175129111 h 5 HYPERLINK l _Toc175129112 PAGEREF _Toc175129112 h 6 HYPERLINK l _Toc175129113 PAGEREF _Toc175129113 h 6 HYPERLINK l _Toc175129114 PAGEREF _Toc175129114 h 8 HYPERLINK l _Toc175129115 2.5 VB编写组件基本介绍 PAG
10、EREF _Toc175129115 h 9 HYPERLINK l _Toc175129116 PAGEREF _Toc175129116 h 9 HYPERLINK l _Toc175129117 3 Excel条件格式化工具的具体实现 PAGEREF _Toc175129117 h 12 HYPERLINK l _Toc175129118 3.1插件接口方法 PAGEREF _Toc175129118 h 12 HYPERLINK l _Toc175129119 3.2 Excel插件的实现 PAGEREF _Toc175129119 h 13 HYPERLINK l _Toc17512
11、9120 PAGEREF _Toc175129120 h 13 HYPERLINK l _Toc175129121 PAGEREF _Toc175129121 h 13 HYPERLINK l _Toc175129122 参考文献 PAGEREF _Toc175129122 h 21 HYPERLINK l _Toc175129123 致 谢 PAGEREF _Toc175129123 h 22 HYPERLINK l _Toc175129124 声 明 PAGEREF _Toc175129124 h 23第21页 共 23 页Excel条件格式化工具的设计与实现1引言我们生活的这个世界是丰富
12、多彩的,几乎所有的知识都来自于视觉。也许无法记住一连串的数字,以及它们之间的关系和趋势。但是可以很轻松地记住一幅图画或者一个曲线。Excel就具有许多高级的制图功能,同时使用起来也非常方便。它不仅可以用来制作电子表格、完成许多复杂的数据运算,还可以进行数据的分析和预测。Excel文档是实际工作学习中最为常用的文档格式之一,为了增强Word、Excel等软件的自动化能力,人们开发了各种提高办公效率的软件,它们大多数实用、专业性强。为了避免用户做大量重复性的工作,提高Office办公效率,达到提高其实用功能的目的,可根据具体工作内容要求,编写出最具本地化、个性化、最合适的软件。2 COM组件的实现
13、技术2.1 COM组件技术COM 是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。COM是开发软件组件的一种方法。组件实际上是一些小的二进制可执行程序,它们可以给应用程序,操作系统以及其他组件提供服务。开发自定
14、义的COM组件就如同开发动态的,面向对象的API。多个COM对象可以连接起来形成应用程序或组件系统。并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。并且Microsoft的开发人员也大量使用COM组件来定制他们的应用程序及操作系统。COM所含的概念并不止是在Microsoft Windows操作系统下才有效。COM并不是一个大的API,它实际上象结构化编程及面向对象编程方法那样,也是一种编程方法。在任何一种操作系统中,开发人员均可以遵循“COM方法”。一个应用程序
15、通常使由单个的二进制文件组成的。当编译器生成应用程序之后,在对下一个版本重新编译并发行新生成的版本之前,应用程序一般不会发生任何变化。操作系统,硬件及客户需求的改变都必须等到整个应用程序被重新生成。目前这种状况已经发生变化。开发人员开始将单个的应用程序分隔成单独多个独立的部分,也既组件。这种做法的好处是可以随着技术的不断发展而用新的组件取代以有的组件。此时的应用程序可以随新组件不断取代旧的组件而渐趋完善。而且利用已有的组件,用户还可以快速的建立全新的应用。传统的做法是将应用程序分割成文件,模块或类,然后将它们编译并链接成一个单模应用程序。它与组件建立应用程序的过程(称为组件构架)有很大的不同。
16、一个组件同一个微型应用程序类似,即都是已经编译链接好并可以使用的二进制代码,应用程序就是由多个这样的组件打包而得到的。单模应用程序只有一个二进制代码模块。自定义组件可以在运行时刻同其他的组件连接起来以构成某个应用程序。在需要对应用程序进行修改或改进时,只需要将构成此应用程序的组件中的某个用新的版本替换掉即可。COM即组件对象模型,是关于如何建立组件以及如何通过组件建立应用程序的一个规范,说明了如何可动态交替更新组件。使用组件的优点:组件架构的一个优点就是应用可以随时间的流逝而发展进化。除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。使
17、用组件的种种优点直接来源于可以将它们动态的插入或卸出应用。为了实现这种功能,所有的组件必须满足两个条件:第一,组件必须动态链接;第二,它们必须隐藏(或封装)其内部实现细节。动态链接对于组件而言是一个至关重要的要求,而消息隐藏则是动态链接的一个必要条件。2.2 接口由于组件向外部隐藏了其内部的细节,因此客户要使用组件时就必须通过一定的机制,也就是说要通过一定的方法来实现客户与组件之间的通信,这就需要接口。所谓接口就是组件对外暴露的、向外部客户提供服务的“连接点”。外部的客户见不到组件内部的细节,它所能看到的只是接口,客户也是通过接口来获取组件提供的服务。这有点像OSI网络协议分层模型,每一层就像
18、一个组件,它内部的实现细节对于其他层是不可见的;而每一层通过“服务接入点”向其上层提供服务,这就像这里所说的接口。一般来说,接口总是固定的,也是公开的。组件的开发人员要实现这些接口,而客户则通过接口获得服务。正是接口的这种固定和公开,才使得组件和客户能够在不了解对方的情况下达成一致。接口提供了两个不同对象间的一种连接。实际上计算机程序是通过一组函数而连接起来的。这组函数实际上就定义了程序中不同部分的接口。DLL的接口就是它所输出的那些函数。COM中的接口也涉及到一组由组件实现并提供给客户使用的函数。对于COM来说,接口是一个包含一个函数指针数组的内存结构。第一个数组包含的是一个由组件所实现的函
19、数的地址。对于COM而言,接口就是此内存结构,其它东西均是一个COM并不关心的实现细节。接口的作用:在COM中接口就是一切。对于客户来说,一个组件就是一个接口集。客户只能通过接口才能同COM组件打交道。从整体上讲,客户对于一个组件可以说是知之甚少的。在某些情况下,客户甚至不必知道一个组件所提供的所有接口。可复用应用程序架构:说组件仅仅只是接口的实现细节当然有点言过其实。不管怎么说,一个未被实现的接口实际上什么也不能完成。但是组件可从应用程序中删除并可用另外一个组合来取代之。只要新的组件支持同组件相同的接口,那么整个应用程序将仍然能够工作。单个的组件并不能对整个应用程序产生决定的作用。相反,用以
20、连接组件的接口将对整个应用程序产生决定性的作用。只要接口保持不变,那么组件可以任意地更换。接口同木板房中的大梁非常类似。这些大梁决定了整个房屋的结构。同样可以将应用程序所用的组件替换掉,这样应用程序的行为将会发生变化,但从结构上讲,整个应用程序并没有发生任何变化。使用组件来构造应用程序的最大的优点在于可以复用应用程序的结构。如果接口设计得好的话,将可以得到可复用极高的结构。当然使用接口除了可以设计出可复用的结构外,还有其它若干优点。COM接口的其它优点:接口使得客户可以用同样的方式来处理不同的组件。这种能力就被称作是多态。这些优点是通过接口将某个特定的行为封闭起来而获得的。2.3 插件技术插件
21、是一类特殊的组件。它的目的不是为一般应用程序使用,而是专为特定的应用程序使用。插件一般在宿主应用程序上添加控制项,如菜单、工具按键等。插件响应宿主程序中对这些项目的操作,并对宿主程序中的数据进行特定操作。插件是一种遵循一定规范的应用程序接口编写出来的程序。插件是一类特殊的组件。它的目的不是为一般应用程序使用,而是专为特定的应用程序使用。插件的本质是在不修改程序主体的情况下对软件功能进行加强,当插件的接口被公开时,任何公司或个人都可以自己制作插件来解决一些操作上的不便或增加一些功能。插件还可以支持多人合作开发,不同的功能可以由不同的人来完成,而且由于不同插件之间互不影响,方便程序的调试和纠错。插
22、件一般在宿主应用程序上添加控制项,如菜单、工具按键等。插件响应宿主程序中对这些项目的操作,并对宿主程序中的数据进行特定操作。插件类型从广义的范围来看,插件有以下三种类型:1类似批命令的简单插件。事实上这种插件的自由度非常低。运行这种插件后,会一步步要求用户进行选择/输入,最后根据用户的输入来执行一系列事先定义好的操作。这种插件一般是文本文件。功能比较单一,可扩展性极小。优点是插件做起来非常方便,即使是对程序设计了解不多的人也可以制作。2使用一种特殊的脚本语言来实现的插件。这种插件比较难写,需要软件开发者自己制作一个程序解释内核。比如微软惹了很多麻烦的宏就是这种类型的。有一套著名的Office辅
23、助工具就是完全用Office内置的VBScript写成的。这种方法的优点在于无需使用其它工具来制作插件,软件本身就可以实现,普遍出现于各种办公自动化软件中。3利用已有的程序开发环境来制作插件。例如PhotoShop等软件使用的方法。使用这种方法的软件在程序主体中建立了多个自定义的接口,使插件能够自由访问程序中的各种资源。这种插件的优势在于自由度极大,可以无限发挥插件开发者的创意,这种插件是狭义范围的插件,也是真正意义上的插件。而这种插件机制的编写相对复杂,对于插件接口之间的协调比较困难。2.4 EXCEL对象模型 Excel对象模型的类以及之间的关系Excel组件中定义了大量的类。下图显示了我
24、们在软件开发中使用到的一些主要的类和它们之间的关系。图1 Excel对象模型片断2.4.2 使用Excel在VB应用程序中使用Excel,实质是将Excel作为一个外部对象来引用,由Excel对象模型提供能从VB应用程序内部来程序化操纵的对象以及相关的属性、方法和事件。为了能从VB应用程序中访问Excel丰富的内部资源,使Excel应用程序运行得更快,需要在VB工程中添加对Excel类型库的引用。具体步骤如下:a)从VB6工程菜单中选择引用;b) 在引用对话框中选择Excel类型库:Microsoft Excel 11.0 Object Library;c)单击左边小方框,使之出现符号;d)按
25、确定退出。注:要想在VB应用程序中调用Excel,你的计算机系统中必须安装Excel。 引用Application对象Application对象是Excel对象模型的顶层,表示整个Excel应用程序。在VB应用程序中调用Excel,就是使用Application对象的属性、方法和事件。为此,首先要声明对象变量:Dim VBExcel As Object 或直接声明为Excel对象:Dim VBExcel As Excel.Application 在声明对象变量之后,可用CreateObject函数或GetObject函数给变量赋值。前者创建一个新的Excel实例,后者取得当前打开的Excel实
26、例。两个函数均返回对Excel的Application对象引用。a)用CreateObject函数生成新的对象引用:Set VBExcel=CreateObject (Excel.Application) 字符串Excel.Application是提供Excel应用程序的编程ID。b)用GetObject函数打开已存在的对象引用:Set AppExcel=GetObject(SAMP.XLS, Excel.Application) 上面语句打开文件SAMP.XLS。2.4.4 Application对象常用的属性、方法Visible属性取True或False,表明Excel应用程序是否可见。L
27、eft,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. Evaluate (
28、3+5*(cos (1/log (99. 9) 在VB应用程序中使用Excel应用程序,就是通过Application对象的属性、方法来获得其它Excel对象,如工作簿、工作表、单元等待。下面分类给出其中常用的属性和方法。2.4.5 使用工作薄Workbook对象代表Excel应用程序中当前打开的一个工作簿,包含在Workbooks集合中。可以通过Workbooks集合或表示当前活动工作簿的Active Workbook对象访问Workbook对象。常用的方法有:Add方法 创建新的空白工作簿,并将其添加到集合中。 Open方法 打开工作簿。 Activate方法 激活工作簿,使指定工作簿变为
29、活动工作簿,以便作为Active Workbook对象使用。 Save方法 按当前路径和名称保存现有工作簿(如是首次保存,则将其保存到缺省名称中,如BOOK1.XLS)。 SaveAs方法 首次保存工作簿或用另一名称保存工作簿。 Close方法 关闭工作簿。 PrintOut方法 打印工作簿,语法为:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)可选参数:From:打印的起始页号。如省略将从起始位置开始打印。To:打印的终止页号。如省略将打印至最后一页。Copies:要打印的份数。如省略将只打印一份。Preview:
30、如果为True则Excel打印指定对象之前进行打印预览。如果为False,或省略则立即打印该对象。Printer:设置活动打印机的名称。ToFile:如果为True则打印输出到文件。Collate:如果为True则逐份打印每份副本。下面语句将活动工作簿的2到5页打印3份:ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 示例2:生成、保存、关闭工作簿Dim VBExcel As Excel.ApplicationSet VBExcel= CreateObject(Excel.Application)With VBExcel.Workbooks.Add
31、With ActiveWorkbook.Save AsC: Temp OUTPUT.XLS.CloseEnd WithQuitEnd With 2.4.6 使用工作表Sheets集合表示工作簿中所有的工作表。可以通过Sheets集合来访问、激活、增加、更名和删除工作表。一个Worksheet对象代表一个工作表。Worksheets属性 返回Sheets集合。 Name属性 工作表更名。 Add方法 创建新工作表并将其添加到工作簿中。 Select方法 选择工作表。 Copy方法 复制工作表。 Move方法 将指定工作表移到工作簿的另一位置。 Delete方法 删除指定工作表。 PrintOut
32、方法 打印工作表示例:将C盘工作簿中的工作表复制到A盘工作簿中Dim VBExcel As Excel.ApplicationSet VBExcel=CreateObject(Excel.Application) With VBExcel.Workbooks.Open C:TempOUTPUT.XLS.Workbooks.OpenA:OUTPUT1.XLS.Workbooks(OUTPUT.XLS).Sheets (Sales).Copy.Workbooks(OUTPUT1.XLS).Workbooks(OUTPUT1.XLS).Save.Workbooks(OUTPUT.XLS).Close
33、.Workbooks(OUTPUTI.XLS).Close.QuitEnd With 使用单元范围对象(Range):Range对象代表工作表的某一单元格、某一行、某一列、某一选定区域或者某一三维区域。Range属性 Range (arg)其中arg为A1-样式符号,表示单个单元格或单元格区域。Range对象的主要属性和方法包括:Cells属性 Cells (row, col )(其中row为行号,col为列号)表示单个单元格。 ColumnWidth属性 指定区域中所有列的列宽。 Rowl3eight属性 指定区域中所有行的行宽。 Value属性 指定区域中所有单元格的值(缺省属性)。 Fo
34、rmula属性 指定单元格的公式,由A1-样式引用。 Select方法 选择范围。 Copy方法 将范围的内容复制到剪贴板。 C1earContents方法 清除范围的内容。 Delete方法 删除指定单元范围。 以上简要介绍了Excel对象模型中部分对象及其属性和方法,更详细的信息可参阅Excel 2000帮助中的Microsoft Excel Visual Basic参考一节的内容。实际上,Microsoft Office家族的Word,PowerPoint, Access和Project等应用程序都可以在VB应用程序中调用,其原理和步骤完全相同,只是其对象模型有所不同而已。2.5 VB编
35、写组件基本介绍 在VB中编写COM组件1、新建ActiveX DLL工程图2 ActiveX DLL工程注意:该类型工程缺省添加的不是窗体,而是类模块。2、修改工程属性菜单:工程属性图3 菜单:工程属性其中,工程名称就是组件的名称。3、修改类模块的性质图4 模块的性质说明:其中的Instancing是组件对象的实例化方式。5-MultiUse:可以创建多个实例。1-Private: 私有对象。不能在外部程序中创建它的实例,但公开其接口。4、定义对象的属性和方法与一般VB类相同。如添加以下代码,定义了该对象缺省接口的Hello方法:Public Sub Hello(sMsg As String)
36、MsgBox sMsgEnd Sub如果定义为Private,则不是接口的方法,而是私有对象中的方法,对外不公开。5、编译生成COM组件菜单:文件生成6、调试和使用该COM组件(1) 在当前工程组中添加一个标准EXE的VB工程。菜单:文件添加工程。(2) 在新工程中引用前面的ActiveX DLL工程。COM组件工程的名称将出现在组件选择对话框的列表中图5 引用工程(3)将新工程设置为启动工程。图6 启动工程(4)在新工程中添加代码,创建组件对象,调用其Hello方法。Private Sub Command1_Click()Dim myVBObj As MyVBCom.VBComObjectS
37、et myVBObj = New MyVBCom.VBComObjectmyVBObj.Hello Hello world.End Sub(5)设置断点,运行。3 Excel条件格式化工具的具体实现3.1插件接口方法当VB运行时,在Add-In菜单中装载组件以后,VB就会调用组件中IDTExtensibility对象中的OnConnection方法。在OnConnection方法里定义Application对象变量,并调用CommandBars.Add方法,就可在程序运行时加载工具栏。在“引用”对话框中选择“Microsoft Office 8.0 Object library”复选框,可以通
38、过“对象浏览器”访问并浏览各种命令条对象。因为菜单和工具栏属于相同的对象库,它们都将通过CommandBarControl对象被引用。一个菜单条命令条可以包括几个菜单项,每个菜单项本身也是一个命令条,而且它又可以包括若干个菜单命令,每条命令依然是一个命令条。利用这种模式可以很容易地在开发环境中放置外接程序。使用commandBars集合对象用外接程序来添加命令栏和控件。在OnConnection事件过程定义Application、commandbars对象变量,此过程创建新的命令条按钮,并返回对它的对象变量,并定义commandbar上按键的事件。3.2 Excel插件的实现3.2.1插件实现
39、的功能(1)在Excel中建立3列:姓名,平时,考试。并输入模拟数据。(2)选择所有学生姓名单元;(3)点击插件的按键,出现对话框。(4)在其中输入格式化的条件(类似于Excel的公式,只是将相对单元位置的表示方式,加了一个符号。如:sum(A1:D1)=4, 表示将A1到D1单元的数据相加,判断其和是否大于等于4。相对的含义是:对当前单元而言,求和的是A1到D1。如果当前单元的行列加了1,则求和的将是B2到E2。(即,求和的单元相对于当前单元的偏移量不变)。本例中输入:B2*30/100+C2*70/10060(5)点击字体按键,选择字体、颜色等;(6)点击填充按键,选择填充色和模式;(7)
40、点击“格式化”按键。3.2.2具体功能实现3.2图7 设计器3.2图8 窗体设置字体按钮:图9 设置字体按钮选择字体Private Sub cmdSetFont_Click()选择一个临时单元Dim rng As RangeSet rng = mExcelApp.Selection保存其原有字体设置Dim size, italic, underline, strikethrough, bold, color, style, nameitalic = rn使用Excel的标准对话框设置其字体mExcelApp.Dialogs(xlDialogFontProperties).Show保存其字体设置
41、mFonts恢复其原有字体设置End Sub单元填充按钮:图10 单元填充按钮Private Sub cmdBackGround_Click()选择一个临时单元Dim rng As RangeSet rng = mExcelApp.Selection保留原有设置Dim clrIndex, pClrIndex, p, pClr设置新的填充模式mExcelApp.Dialogs(xlDialogPatterns).Show保存设置恢复临时单元以前设置End Sub保存单元格式设置的变量Private Sub cmdCancel_Click()Unload MeEnd SubPrivate Sub
42、cmdFormat_Click()FormatSelectedCells Trim(txtFormula)MsgBox 格式化完成!Unload MeEnd Sub3.2.2.(类模块设计中包括“段”类和公式类)1 段类表示公式的一部分, 可能是字符串, 也可能是一个相对的位置.职责: 将相对位置转换为当前的绝对位置根据当前单元相对于公式原始位置的偏移, 计算绝对位置2 公式类职责:1. 将公式字符串转换为段对象(见: CSegment), 以表示其中的相对单元位置2. 根据提供的当前行列号, 得到当前的公式字符串.Option Explicit公式的原始位置Private mAbsRow A
43、s LongPrivate mAbsCol As Long组成公式的段Private mSegments As Collection设置公式字符串Public Sub SetFormula(ByVal sFormula As String, ByVal absRow As Long, ByVal absCol As Long)这个公式字符串有很多信息类型、范围 释放原有的段集Set mSegments = Nothing定义新的段集Set mSegments = New CollectionmAbsRow = absRowmAbsCol = absCol解析公式(查找其中的相对单元位置: 以开
44、头的单元)主要是从上面的 公式字符串里提取我们需要的 相对位置的信息Dim i As Integer, sChar As String, sSeg As StringDim blnInBrace 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 blnInBr
45、ace 是否在引号内标志取反Case 可能是相对单元位置If Not blnInBrace Then 不在引号嵌套中, 则确定是一个相对位置保存前面的段If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfsSeg = blnGettingRelativeCell = TruesChar = End IfEnd SelectIf blnGettingRelativeCell And sChar ThenIf Not IsPositionChar(sChar) Then如果遇到非位置字符,说明相对位置的字符串已经结束AddSegment
46、 sSeg, True清空sSeg,为保存下一个段作准备sSeg = blnGettingRelativeCell = FalseEnd IfEnd IfsSeg = sSeg & sChar 将当前字符保存到sSeg中Next保存最后一个段(如果有的话)If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfEnd Sub以上主要功能实现是:公式类字符串中的信息有很多类型、范围 需要从公式字符串里提取我们需要的相对位置信息。为相对位置的开始设置一个标记 并找到和判断相对位置信息进行保存。判断一个字符是否是表示单元位置的字符(字母或数字
47、)Private Function IsPositionChar(sChar As String) As BooleanDim sTmp As StringsTmp = 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 nRo
48、w As Long, ByVal nCol As Long) As StringIf mSegments.Count = 0 Then Exit FunctionDim seg As CSegment, sFormula As StringFor Each seg In mSegmentssFormula = sFormula & seg.GetSegmentString(nRow - mAbsRow, nCol - mAbsCol)NextGetFormula = sFormulaEnd Function结 论我们根据COM组件和Office插件编程原理开发了本软件,其中实现了对条件格式判断
49、的功能。软件虽小,但基本上能够满足输入格式判断的功能。用户需要的条件各种各样,有的是单个单元内的数值比较、有的是多个单元内的综合比较,比较方式可以用公式表示。但输入界面中只能输入指定的字符串。如何根据字符串进行单元内容的计算这是这个软件实现的难点。经指导老师王老师的帮助和讲解后终于可以完成输入格式判断的功能。由于时间仓促软件中还存在一些可以改进的地方。如:选择单元时只能选择列。如果要选择行,则在公式输入时的相对地址上就要相应变化。如果我们增加两个窗口按钮:一个行单元选择,一个列单元选择。这样就可以解决选择行比较时需要修改相对地址的问题。参考文献1 赵建敏,郭庆.Visual Basic 6.0
50、编程指南M.北京:航空工业出版社,1999。2 李鸿吉.Visual 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
51、Basic 6.0高级编程M.北京:清华大学出版社,2003。8 张德强.Visual Basic案例开发M.北京:中国水利水电出版社,2005。9 Dale Rogerson美.COM技术内幕:微软组件对象模型M.北京:清华大学出版社,1999。第 22页 共 23 页致 谢本文是在王燚老师的热情关心和指导下完成的,他渊博的知识和严谨的治学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最衷心的感谢!最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!声 明本论文的工作是 2006年 3 月至2007年 6 月在成都信息工程学院 系完成的。文中除了特别加以标注地方外,不
52、包含他人已经发表或撰写过的研究成果,也不包含为获得成都信息工程学院或其他教学机构的学位或证书而使用过的材料。除非另有说明,本文的工作是原始性工作。关于学位论文使用权和研究成果知识产权的说明本人完全了解成都信息工程学院有关保管使用学位论文的规定,其中包括:(1)学校有权保管并向有关部门递交学位论文的原件与复印件。(2)学校可以采用影印、缩印或其他复制方式保存学位论文。(3)学校可以学术交流为目的复制、赠送和交换学位论文。(4)学校可允许学位论文被查阅或借阅。(5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵守此规定)。除非另有科研合同和其他法律文书的制约,本论文的科研成果属于成都
53、信息工程学院。特此声明! 作者签名: 年 月 日This boothwn outside, each car became a single organism which ate and drank and excreted through its ventilators. It talked or sometimes yelled through its ventilators, too. In went water and loaves of blackbread and sausage and cheese, and out came shit and piss and language
54、. Human beings in there were excreting into steel helmets, which were passed to the people at the ventilators, who dumped them. Billy was a dumper. The human beings also passed canteens, which guards would fill with water. When food came in, the human beings were quiet and trusting and beautiful. Th
55、ey shared. Human beings in there took turns standing or lying down. The legs of those who stood were like fence posts driven into a warm., squirming, fatting, sighing earth. The queer earth was a mosaic of sleepers who nestled like spoons. Now the train began to creep eastward. Somewhere in there wa
56、s Christmas. Billy Pilgrim nestled like a spoon with the hobo on Christmas night, and he fell asleep, and he traveled in time to 1967 again-to the night he was kidnapped by a flying saucer from Tralfamadore.Four Billy Pilgrim could not sleep on his daughters wedding night. He was forty-four. The wed
57、ding had taken place that afternoon in a gaily striped tent in Billys backyard. The stripes were orange and black. Billy and his wife, Valencia, nestled like spoons in their big double bed. They were jiggled by Magic Fingers. Valencia didnt need to be jiggled to sleep. Valencia was snoring like a ba
58、ndsaw. The poor woman didnt have ovaries or a uterus any more. They had been removed by a surgeon-by one of Billys partners in the New Holiday Inn. There was a full moon. Billy got out of bed in the moonlight. He felt spooky and luminous felt as though he were wrapped in cool fur that was full of st
59、atic electricity. He looked down at his bare feet. They were ivory and blue. Billy now shuffled down his upstairs hallway, knowing he was about to be kidnapped by a flying saucer. The hallway was zebra-striped with darkness and moonlight. The moonlight came into the hallway through doorways of the e
60、mpty rooms of Billys two children, children no more. They were gone forever. Billy was guided by dread and the lack of dread. Dread told him when to stop. Lack of it told him when to move again. He stopped. He went into his daughters room. Her drawers were dumped. her closet was empty. Heaped in the
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度广告代理发布与新媒体推广合同3篇
- 2024年专业版:房产预约购买协议关键问题分析2篇
- 2024年定制钢结构厂房建设合同3篇
- 艺术墙绘施工协议书(2024年版)3篇
- 2024年度影视制作合同:某电影制作公司的电影拍摄与制作2篇
- 2024年生产沙场承包合同3篇
- 2024年杉木购销协议书3篇
- 2024年度技术咨询合同:企业信息化建设咨询与实施协议2篇
- 二零二四年度工程设计施工合同2篇
- 2024年艺人经纪分成合同3篇
- 会计基础工作规范课件
- 中小学教务如何让学员家长续费-课件
- 招投标知识培训
- 最新鲁科版英语四年级上册Unit-6《Lesson-2-What-does-your-mother-do》课件
- 《逻辑的力量》课件135张 统编版高中语文选择性必修上册
- 医生三基三严测试试题库含答案
- 华为IPD实施 全纪录
- 北京市统一医疗服务收费标准
- 建设项目基本建设程序课件
- 儿童合唱练声曲
- 一年级上册期中考试家长会幻灯片
评论
0/150
提交评论