




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)(論文)Excel條件格式化工具的設(shè)計(jì)與實(shí)現(xiàn)論文作者姓名:申請(qǐng)學(xué)位專業(yè):申請(qǐng)學(xué)位類別:論文提交日期:Excel條件格式化工具的設(shè)計(jì)與實(shí)現(xiàn)摘要Excel是一個(gè)在各個(gè)領(lǐng)域中被廣泛應(yīng)用的電子表格軟件。通過它,我們可以很好的組織管理數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析等。在實(shí)際應(yīng)用中,我們發(fā)現(xiàn)經(jīng)常需要根據(jù)某種特定的條件,特殊顯示部分?jǐn)?shù)據(jù)。雖然這種功能可以通過Excel宏來實(shí)現(xiàn),但每次編寫類似的代碼使人感覺跟不方便。Excel同其它Office組件一樣,提供了通過插件進(jìn)行功能擴(kuò)展的可能。通過編寫和安裝插件,我們可以幾乎任意地?cái)U(kuò)展Excel的功能,為我們的工作提供極大的便利。本文詳細(xì)介紹了一個(gè)Excel條件格
2、式化軟件的設(shè)計(jì)和實(shí)現(xiàn)。該軟件使用COM組件技術(shù),根據(jù)Office插件的接口要求,設(shè)計(jì)了一個(gè)Excel的插件。該插件在Excel應(yīng)用程序的窗口中增加一個(gè)工具欄,并在其上創(chuàng)建了一個(gè)按鍵,用于打開格式化設(shè)置窗口。軟件可以對(duì)用戶輸入的、用字符串表達(dá)的判斷條件進(jìn)行計(jì)算,并根據(jù)計(jì)算結(jié)果,將滿足條件的單元數(shù)據(jù)設(shè)置為用戶選擇的特殊格式(字體、顏色、字號(hào)、修飾等)關(guān)鍵詞: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目 錄 論文總頁數(shù):23頁 TOC o 1-3 h z u HYPERLINK l _Toc175129103 1引言 PAGEREF _Toc175129103 h 1 HYPERLINK l _Toc175129104 2 Com組件的實(shí)現(xiàn)技術(shù) PAGEREF _Toc175129104 h 1 HYPERL
8、INK l _Toc175129105 2.1 COM組件技術(shù) PAGEREF _Toc175129105 h 1 HYPERLINK l _Toc175129106 2.2 接口 PAGEREF _Toc175129106 h 2 HYPERLINK l _Toc175129107 2.3 插件技術(shù) PAGEREF _Toc175129107 h 3 HYPERLINK l _Toc175129108 2.4 EXCEL對(duì)象模型 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條件格式化工具的具體實(shí)現(xiàn) PAGEREF _Toc175129117 h 12 HYPERLINK l _Toc175129118 3.1插件接口方法 PAGEREF _Toc175129118 h 12 HYPERLINK l _Toc175129119 3.2 Excel插件的實(shí)現(xiàn) PAGEREF _Toc175129119 h 13 HYPERLINK l _Toc17512
11、9120 PAGEREF _Toc175129120 h 13 HYPERLINK l _Toc175129121 PAGEREF _Toc175129121 h 13 HYPERLINK l _Toc175129122 參考文獻(xiàn) PAGEREF _Toc175129122 h 21 HYPERLINK l _Toc175129123 致 謝 PAGEREF _Toc175129123 h 22 HYPERLINK l _Toc175129124 聲 明 PAGEREF _Toc175129124 h 23第21頁 共 23 頁Excel條件格式化工具的設(shè)計(jì)與實(shí)現(xiàn)1引言我們生活的這個(gè)世界是豐富
12、多彩的,幾乎所有的知識(shí)都來自于視覺。也許無法記住一連串的數(shù)字,以及它們之間的關(guān)系和趨勢(shì)。但是可以很輕松地記住一幅圖畫或者一個(gè)曲線。Excel就具有許多高級(jí)的制圖功能,同時(shí)使用起來也非常方便。它不僅可以用來制作電子表格、完成許多復(fù)雜的數(shù)據(jù)運(yùn)算,還可以進(jìn)行數(shù)據(jù)的分析和預(yù)測(cè)。Excel文檔是實(shí)際工作學(xué)習(xí)中最為常用的文檔格式之一,為了增強(qiáng)Word、Excel等軟件的自動(dòng)化能力,人們開發(fā)了各種提高辦公效率的軟件,它們大多數(shù)實(shí)用、專業(yè)性強(qiáng)。為了避免用戶做大量重復(fù)性的工作,提高Office辦公效率,達(dá)到提高其實(shí)用功能的目的,可根據(jù)具體工作內(nèi)容要求,編寫出最具本地化、個(gè)性化、最合適的軟件。2 COM組件的實(shí)現(xiàn)
13、技術(shù)2.1 COM組件技術(shù)COM 是微軟公司為了計(jì)算機(jī)工業(yè)的軟件生產(chǎn)更加符合人類的行為方式開發(fā)的一種新的軟件開發(fā)技術(shù)。在COM構(gòu)架下,人們可以開發(fā)出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。由此帶來的好處是多方面的:可以將系統(tǒng)中的組件用新的替換掉,以便隨時(shí)進(jìn)行系統(tǒng)的升級(jí)和定制;可以在多個(gè)應(yīng)用系統(tǒng)中重復(fù)利用同一個(gè)組件;可以方便的將應(yīng)用系統(tǒng)擴(kuò)展到網(wǎng)絡(luò)環(huán)境下;COM與語言,平臺(tái)無關(guān)的特性使所有的程序員均可充分發(fā)揮自己的才智與專長(zhǎng)編寫組件模塊。COM是開發(fā)軟件組件的一種方法。組件實(shí)際上是一些小的二進(jìn)制可執(zhí)行程序,它們可以給應(yīng)用程序,操作系統(tǒng)以及其他組件提供服務(wù)。開發(fā)自定
14、義的COM組件就如同開發(fā)動(dòng)態(tài)的,面向?qū)ο蟮腁PI。多個(gè)COM對(duì)象可以連接起來形成應(yīng)用程序或組件系統(tǒng)。并且組件可以在運(yùn)行時(shí)刻,在不被重新鏈接或編譯應(yīng)用程序的情況下被卸下或替換掉。Microsoft的許多技術(shù),如ActiveX, DirectX以及OLE等都是基于COM而建立起來的。并且Microsoft的開發(fā)人員也大量使用COM組件來定制他們的應(yīng)用程序及操作系統(tǒng)。COM所含的概念并不止是在Microsoft Windows操作系統(tǒng)下才有效。COM并不是一個(gè)大的API,它實(shí)際上象結(jié)構(gòu)化編程及面向?qū)ο缶幊谭椒菢?,也是一種編程方法。在任何一種操作系統(tǒng)中,開發(fā)人員均可以遵循“COM方法”。一個(gè)應(yīng)用程序
15、通常使由單個(gè)的二進(jìn)制文件組成的。當(dāng)編譯器生成應(yīng)用程序之后,在對(duì)下一個(gè)版本重新編譯并發(fā)行新生成的版本之前,應(yīng)用程序一般不會(huì)發(fā)生任何變化。操作系統(tǒng),硬件及客戶需求的改變都必須等到整個(gè)應(yīng)用程序被重新生成。目前這種狀況已經(jīng)發(fā)生變化。開發(fā)人員開始將單個(gè)的應(yīng)用程序分隔成單獨(dú)多個(gè)獨(dú)立的部分,也既組件。這種做法的好處是可以隨著技術(shù)的不斷發(fā)展而用新的組件取代以有的組件。此時(shí)的應(yīng)用程序可以隨新組件不斷取代舊的組件而漸趨完善。而且利用已有的組件,用戶還可以快速的建立全新的應(yīng)用。傳統(tǒng)的做法是將應(yīng)用程序分割成文件,模塊或類,然后將它們編譯并鏈接成一個(gè)單模應(yīng)用程序。它與組件建立應(yīng)用程序的過程(稱為組件構(gòu)架)有很大的不同。
16、一個(gè)組件同一個(gè)微型應(yīng)用程序類似,即都是已經(jīng)編譯鏈接好并可以使用的二進(jìn)制代碼,應(yīng)用程序就是由多個(gè)這樣的組件打包而得到的。單模應(yīng)用程序只有一個(gè)二進(jìn)制代碼模塊。自定義組件可以在運(yùn)行時(shí)刻同其他的組件連接起來以構(gòu)成某個(gè)應(yīng)用程序。在需要對(duì)應(yīng)用程序進(jìn)行修改或改進(jìn)時(shí),只需要將構(gòu)成此應(yīng)用程序的組件中的某個(gè)用新的版本替換掉即可。COM即組件對(duì)象模型,是關(guān)于如何建立組件以及如何通過組件建立應(yīng)用程序的一個(gè)規(guī)范,說明了如何可動(dòng)態(tài)交替更新組件。使用組件的優(yōu)點(diǎn):組件架構(gòu)的一個(gè)優(yōu)點(diǎn)就是應(yīng)用可以隨時(shí)間的流逝而發(fā)展進(jìn)化。除此之外,使用組件還有一些可以使對(duì)以有應(yīng)用的升級(jí)更加方便和靈活的優(yōu)點(diǎn),如應(yīng)用的定制,組件庫以及分布式組件等。使
17、用組件的種種優(yōu)點(diǎn)直接來源于可以將它們動(dòng)態(tài)的插入或卸出應(yīng)用。為了實(shí)現(xiàn)這種功能,所有的組件必須滿足兩個(gè)條件:第一,組件必須動(dòng)態(tài)鏈接;第二,它們必須隱藏(或封裝)其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)。動(dòng)態(tài)鏈接對(duì)于組件而言是一個(gè)至關(guān)重要的要求,而消息隱藏則是動(dòng)態(tài)鏈接的一個(gè)必要條件。2.2 接口由于組件向外部隱藏了其內(nèi)部的細(xì)節(jié),因此客戶要使用組件時(shí)就必須通過一定的機(jī)制,也就是說要通過一定的方法來實(shí)現(xiàn)客戶與組件之間的通信,這就需要接口。所謂接口就是組件對(duì)外暴露的、向外部客戶提供服務(wù)的“連接點(diǎn)”。外部的客戶見不到組件內(nèi)部的細(xì)節(jié),它所能看到的只是接口,客戶也是通過接口來獲取組件提供的服務(wù)。這有點(diǎn)像OSI網(wǎng)絡(luò)協(xié)議分層模型,每一層就像
18、一個(gè)組件,它內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其他層是不可見的;而每一層通過“服務(wù)接入點(diǎn)”向其上層提供服務(wù),這就像這里所說的接口。一般來說,接口總是固定的,也是公開的。組件的開發(fā)人員要實(shí)現(xiàn)這些接口,而客戶則通過接口獲得服務(wù)。正是接口的這種固定和公開,才使得組件和客戶能夠在不了解對(duì)方的情況下達(dá)成一致。接口提供了兩個(gè)不同對(duì)象間的一種連接。實(shí)際上計(jì)算機(jī)程序是通過一組函數(shù)而連接起來的。這組函數(shù)實(shí)際上就定義了程序中不同部分的接口。DLL的接口就是它所輸出的那些函數(shù)。COM中的接口也涉及到一組由組件實(shí)現(xiàn)并提供給客戶使用的函數(shù)。對(duì)于COM來說,接口是一個(gè)包含一個(gè)函數(shù)指針數(shù)組的內(nèi)存結(jié)構(gòu)。第一個(gè)數(shù)組包含的是一個(gè)由組件所實(shí)現(xiàn)的函
19、數(shù)的地址。對(duì)于COM而言,接口就是此內(nèi)存結(jié)構(gòu),其它東西均是一個(gè)COM并不關(guān)心的實(shí)現(xiàn)細(xì)節(jié)。接口的作用:在COM中接口就是一切。對(duì)于客戶來說,一個(gè)組件就是一個(gè)接口集??蛻糁荒芡ㄟ^接口才能同COM組件打交道。從整體上講,客戶對(duì)于一個(gè)組件可以說是知之甚少的。在某些情況下,客戶甚至不必知道一個(gè)組件所提供的所有接口??蓮?fù)用應(yīng)用程序架構(gòu):說組件僅僅只是接口的實(shí)現(xiàn)細(xì)節(jié)當(dāng)然有點(diǎn)言過其實(shí)。不管怎么說,一個(gè)未被實(shí)現(xiàn)的接口實(shí)際上什么也不能完成。但是組件可從應(yīng)用程序中刪除并可用另外一個(gè)組合來取代之。只要新的組件支持同組件相同的接口,那么整個(gè)應(yīng)用程序?qū)⑷匀荒軌蚬ぷ鳌蝹€(gè)的組件并不能對(duì)整個(gè)應(yīng)用程序產(chǎn)生決定的作用。相反,用以
20、連接組件的接口將對(duì)整個(gè)應(yīng)用程序產(chǎn)生決定性的作用。只要接口保持不變,那么組件可以任意地更換。接口同木板房中的大梁非常類似。這些大梁決定了整個(gè)房屋的結(jié)構(gòu)。同樣可以將應(yīng)用程序所用的組件替換掉,這樣應(yīng)用程序的行為將會(huì)發(fā)生變化,但從結(jié)構(gòu)上講,整個(gè)應(yīng)用程序并沒有發(fā)生任何變化。使用組件來構(gòu)造應(yīng)用程序的最大的優(yōu)點(diǎn)在于可以復(fù)用應(yīng)用程序的結(jié)構(gòu)。如果接口設(shè)計(jì)得好的話,將可以得到可復(fù)用極高的結(jié)構(gòu)。當(dāng)然使用接口除了可以設(shè)計(jì)出可復(fù)用的結(jié)構(gòu)外,還有其它若干優(yōu)點(diǎn)。COM接口的其它優(yōu)點(diǎn):接口使得客戶可以用同樣的方式來處理不同的組件。這種能力就被稱作是多態(tài)。這些優(yōu)點(diǎn)是通過接口將某個(gè)特定的行為封閉起來而獲得的。2.3 插件技術(shù)插件
21、是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。插件一般在宿主應(yīng)用程序上添加控制項(xiàng),如菜單、工具按鍵等。插件響應(yīng)宿主程序中對(duì)這些項(xiàng)目的操作,并對(duì)宿主程序中的數(shù)據(jù)進(jìn)行特定操作。插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫出來的程序。插件是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。插件的本質(zhì)是在不修改程序主體的情況下對(duì)軟件功能進(jìn)行加強(qiáng),當(dāng)插件的接口被公開時(shí),任何公司或個(gè)人都可以自己制作插件來解決一些操作上的不便或增加一些功能。插件還可以支持多人合作開發(fā),不同的功能可以由不同的人來完成,而且由于不同插件之間互不影響,方便程序的調(diào)試和糾錯(cuò)。插
22、件一般在宿主應(yīng)用程序上添加控制項(xiàng),如菜單、工具按鍵等。插件響應(yīng)宿主程序中對(duì)這些項(xiàng)目的操作,并對(duì)宿主程序中的數(shù)據(jù)進(jìn)行特定操作。插件類型從廣義的范圍來看,插件有以下三種類型:1類似批命令的簡(jiǎn)單插件。事實(shí)上這種插件的自由度非常低。運(yùn)行這種插件后,會(huì)一步步要求用戶進(jìn)行選擇/輸入,最后根據(jù)用戶的輸入來執(zhí)行一系列事先定義好的操作。這種插件一般是文本文件。功能比較單一,可擴(kuò)展性極小。優(yōu)點(diǎn)是插件做起來非常方便,即使是對(duì)程序設(shè)計(jì)了解不多的人也可以制作。2使用一種特殊的腳本語言來實(shí)現(xiàn)的插件。這種插件比較難寫,需要軟件開發(fā)者自己制作一個(gè)程序解釋內(nèi)核。比如微軟惹了很多麻煩的宏就是這種類型的。有一套著名的Office輔
23、助工具就是完全用Office內(nèi)置的VBScript寫成的。這種方法的優(yōu)點(diǎn)在于無需使用其它工具來制作插件,軟件本身就可以實(shí)現(xiàn),普遍出現(xiàn)于各種辦公自動(dòng)化軟件中。3利用已有的程序開發(fā)環(huán)境來制作插件。例如PhotoShop等軟件使用的方法。使用這種方法的軟件在程序主體中建立了多個(gè)自定義的接口,使插件能夠自由訪問程序中的各種資源。這種插件的優(yōu)勢(shì)在于自由度極大,可以無限發(fā)揮插件開發(fā)者的創(chuàng)意,這種插件是狹義范圍的插件,也是真正意義上的插件。而這種插件機(jī)制的編寫相對(duì)復(fù)雜,對(duì)于插件接口之間的協(xié)調(diào)比較困難。2.4 EXCEL對(duì)象模型 Excel對(duì)象模型的類以及之間的關(guān)系Excel組件中定義了大量的類。下圖顯示了我
24、們?cè)谲浖_發(fā)中使用到的一些主要的類和它們之間的關(guān)系。圖1 Excel對(duì)象模型片斷2.4.2 使用Excel在VB應(yīng)用程序中使用Excel,實(shí)質(zhì)是將Excel作為一個(gè)外部對(duì)象來引用,由Excel對(duì)象模型提供能從VB應(yīng)用程序內(nèi)部來程序化操縱的對(duì)象以及相關(guān)的屬性、方法和事件。為了能從VB應(yīng)用程序中訪問Excel豐富的內(nèi)部資源,使Excel應(yīng)用程序運(yùn)行得更快,需要在VB工程中添加對(duì)Excel類型庫的引用。具體步驟如下:a)從VB6工程菜單中選擇引用;b) 在引用對(duì)話框中選擇Excel類型庫:Microsoft Excel 11.0 Object Library;c)單擊左邊小方框,使之出現(xiàn)符號(hào);d)按
25、確定退出。注:要想在VB應(yīng)用程序中調(diào)用Excel,你的計(jì)算機(jī)系統(tǒng)中必須安裝Excel。 引用Application對(duì)象Application對(duì)象是Excel對(duì)象模型的頂層,表示整個(gè)Excel應(yīng)用程序。在VB應(yīng)用程序中調(diào)用Excel,就是使用Application對(duì)象的屬性、方法和事件。為此,首先要聲明對(duì)象變量:Dim VBExcel As Object 或直接聲明為Excel對(duì)象:Dim VBExcel As Excel.Application 在聲明對(duì)象變量之后,可用CreateObject函數(shù)或GetObject函數(shù)給變量賦值。前者創(chuàng)建一個(gè)新的Excel實(shí)例,后者取得當(dāng)前打開的Excel實(shí)
26、例。兩個(gè)函數(shù)均返回對(duì)Excel的Application對(duì)象引用。a)用CreateObject函數(shù)生成新的對(duì)象引用:Set VBExcel=CreateObject (Excel.Application) 字符串Excel.Application是提供Excel應(yīng)用程序的編程ID。b)用GetObject函數(shù)打開已存在的對(duì)象引用:Set AppExcel=GetObject(SAMP.XLS, Excel.Application) 上面語句打開文件SAMP.XLS。2.4.4 Application對(duì)象常用的屬性、方法Visible屬性取True或False,表明Excel應(yīng)用程序是否可見。L
27、eft,Top屬性 Excel窗口的位置; Height, Width屬性 Excel窗口的大?。籛indowState屬性 指定窗口的狀態(tài),取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。Quit方法 退出Microsoft Excel;Calculate方法 重新計(jì)算所有打開的工作簿、工作表或單元格。Evaluate方法 求值數(shù)學(xué)表達(dá)式并返回結(jié)果。示例1:求值數(shù)學(xué)表達(dá)式:Dim VBExcel As ObjectSet VBExcel=CreateObject (Excel.Application)X=VBExcel. Evaluate (
28、3+5*(cos (1/log (99. 9) 在VB應(yīng)用程序中使用Excel應(yīng)用程序,就是通過Application對(duì)象的屬性、方法來獲得其它Excel對(duì)象,如工作簿、工作表、單元等待。下面分類給出其中常用的屬性和方法。2.4.5 使用工作薄Workbook對(duì)象代表Excel應(yīng)用程序中當(dāng)前打開的一個(gè)工作簿,包含在Workbooks集合中。可以通過Workbooks集合或表示當(dāng)前活動(dòng)工作簿的Active Workbook對(duì)象訪問Workbook對(duì)象。常用的方法有:Add方法 創(chuàng)建新的空白工作簿,并將其添加到集合中。 Open方法 打開工作簿。 Activate方法 激活工作簿,使指定工作簿變?yōu)?/p>
29、活動(dòng)工作簿,以便作為Active Workbook對(duì)象使用。 Save方法 按當(dāng)前路徑和名稱保存現(xiàn)有工作簿(如是首次保存,則將其保存到缺省名稱中,如BOOK1.XLS)。 SaveAs方法 首次保存工作簿或用另一名稱保存工作簿。 Close方法 關(guān)閉工作簿。 PrintOut方法 打印工作簿,語法為:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)可選參數(shù):From:打印的起始頁號(hào)。如省略將從起始位置開始打印。To:打印的終止頁號(hào)。如省略將打印至最后一頁。Copies:要打印的份數(shù)。如省略將只打印一份。Preview:
30、如果為True則Excel打印指定對(duì)象之前進(jìn)行打印預(yù)覽。如果為False,或省略則立即打印該對(duì)象。Printer:設(shè)置活動(dòng)打印機(jī)的名稱。ToFile:如果為True則打印輸出到文件。Collate:如果為True則逐份打印每份副本。下面語句將活動(dòng)工作簿的2到5頁打印3份:ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 示例2:生成、保存、關(guān)閉工作簿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集合來訪問、激活、增加、更名和刪除工作表。一個(gè)Worksheet對(duì)象代表一個(gè)工作表。Worksheets屬性 返回Sheets集合。 Name屬性 工作表更名。 Add方法 創(chuàng)建新工作表并將其添加到工作簿中。 Select方法 選擇工作表。 Copy方法 復(fù)制工作表。 Move方法 將指定工作表移到工作簿的另一位置。 Delete方法 刪除指定工作表。 PrintOut
32、方法 打印工作表示例:將C盤工作簿中的工作表復(fù)制到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 使用單元范圍對(duì)象(Range):Range對(duì)象代表工作表的某一單元格、某一行、某一列、某一選定區(qū)域或者某一三維區(qū)域。Range屬性 Range (arg)其中arg為A1-樣式符號(hào),表示單個(gè)單元格或單元格區(qū)域。Range對(duì)象的主要屬性和方法包括:Cells屬性 Cells (row, col )(其中row為行號(hào),col為列號(hào))表示單個(gè)單元格。 ColumnWidth屬性 指定區(qū)域中所有列的列寬。 Rowl3eight屬性 指定區(qū)域中所有行的行寬。 Value屬性 指定區(qū)域中所有單元格的值(缺省屬性)。 Fo
34、rmula屬性 指定單元格的公式,由A1-樣式引用。 Select方法 選擇范圍。 Copy方法 將范圍的內(nèi)容復(fù)制到剪貼板。 C1earContents方法 清除范圍的內(nèi)容。 Delete方法 刪除指定單元范圍。 以上簡(jiǎn)要介紹了Excel對(duì)象模型中部分對(duì)象及其屬性和方法,更詳細(xì)的信息可參閱Excel 2000幫助中的Microsoft Excel Visual Basic參考一節(jié)的內(nèi)容。實(shí)際上,Microsoft Office家族的Word,PowerPoint, Access和Project等應(yīng)用程序都可以在VB應(yīng)用程序中調(diào)用,其原理和步驟完全相同,只是其對(duì)象模型有所不同而已。2.5 VB編
35、寫組件基本介紹 在VB中編寫COM組件1、新建ActiveX DLL工程圖2 ActiveX DLL工程注意:該類型工程缺省添加的不是窗體,而是類模塊。2、修改工程屬性菜單:工程屬性圖3 菜單:工程屬性其中,工程名稱就是組件的名稱。3、修改類模塊的性質(zhì)圖4 模塊的性質(zhì)說明:其中的Instancing是組件對(duì)象的實(shí)例化方式。5-MultiUse:可以創(chuàng)建多個(gè)實(shí)例。1-Private: 私有對(duì)象。不能在外部程序中創(chuàng)建它的實(shí)例,但公開其接口。4、定義對(duì)象的屬性和方法與一般VB類相同。如添加以下代碼,定義了該對(duì)象缺省接口的Hello方法:Public Sub Hello(sMsg As String)
36、MsgBox sMsgEnd Sub如果定義為Private,則不是接口的方法,而是私有對(duì)象中的方法,對(duì)外不公開。5、編譯生成COM組件菜單:文件生成6、調(diào)試和使用該COM組件(1) 在當(dāng)前工程組中添加一個(gè)標(biāo)準(zhǔn)EXE的VB工程。菜單:文件添加工程。(2) 在新工程中引用前面的ActiveX DLL工程。COM組件工程的名稱將出現(xiàn)在組件選擇對(duì)話框的列表中圖5 引用工程(3)將新工程設(shè)置為啟動(dòng)工程。圖6 啟動(dòng)工程(4)在新工程中添加代碼,創(chuàng)建組件對(duì)象,調(diào)用其Hello方法。Private Sub Command1_Click()Dim myVBObj As MyVBCom.VBComObjectS
37、et myVBObj = New MyVBCom.VBComObjectmyVBObj.Hello Hello world.End Sub(5)設(shè)置斷點(diǎn),運(yùn)行。3 Excel條件格式化工具的具體實(shí)現(xiàn)3.1插件接口方法當(dāng)VB運(yùn)行時(shí),在Add-In菜單中裝載組件以后,VB就會(huì)調(diào)用組件中IDTExtensibility對(duì)象中的OnConnection方法。在OnConnection方法里定義Application對(duì)象變量,并調(diào)用CommandBars.Add方法,就可在程序運(yùn)行時(shí)加載工具欄。在“引用”對(duì)話框中選擇“Microsoft Office 8.0 Object library”復(fù)選框,可以通
38、過“對(duì)象瀏覽器”訪問并瀏覽各種命令條對(duì)象。因?yàn)椴藛魏凸ぞ邫趯儆谙嗤膶?duì)象庫,它們都將通過CommandBarControl對(duì)象被引用。一個(gè)菜單條命令條可以包括幾個(gè)菜單項(xiàng),每個(gè)菜單項(xiàng)本身也是一個(gè)命令條,而且它又可以包括若干個(gè)菜單命令,每條命令依然是一個(gè)命令條。利用這種模式可以很容易地在開發(fā)環(huán)境中放置外接程序。使用commandBars集合對(duì)象用外接程序來添加命令欄和控件。在OnConnection事件過程定義Application、commandbars對(duì)象變量,此過程創(chuàng)建新的命令條按鈕,并返回對(duì)它的對(duì)象變量,并定義commandbar上按鍵的事件。3.2 Excel插件的實(shí)現(xiàn)3.2.1插件實(shí)現(xiàn)
39、的功能(1)在Excel中建立3列:姓名,平時(shí),考試。并輸入模擬數(shù)據(jù)。(2)選擇所有學(xué)生姓名單元;(3)點(diǎn)擊插件的按鍵,出現(xiàn)對(duì)話框。(4)在其中輸入格式化的條件(類似于Excel的公式,只是將相對(duì)單元位置的表示方式,加了一個(gè)符號(hào)。如:sum(A1:D1)=4, 表示將A1到D1單元的數(shù)據(jù)相加,判斷其和是否大于等于4。相對(duì)的含義是:對(duì)當(dāng)前單元而言,求和的是A1到D1。如果當(dāng)前單元的行列加了1,則求和的將是B2到E2。(即,求和的單元相對(duì)于當(dāng)前單元的偏移量不變)。本例中輸入:B2*30/100+C2*70/10060(5)點(diǎn)擊字體按鍵,選擇字體、顏色等;(6)點(diǎn)擊填充按鍵,選擇填充色和模式;(7)
40、點(diǎn)擊“格式化”按鍵。3.2.2具體功能實(shí)現(xiàn)3.2圖7 設(shè)計(jì)器3.2圖8 窗體設(shè)置字體按鈕:圖9 設(shè)置字體按鈕選擇字體Private Sub cmdSetFont_Click()選擇一個(gè)臨時(shí)單元Dim rng As RangeSet rng = mExcelApp.Selection保存其原有字體設(shè)置Dim size, italic, underline, strikethrough, bold, color, style, nameitalic = rn使用Excel的標(biāo)準(zhǔn)對(duì)話框設(shè)置其字體mExcelApp.Dialogs(xlDialogFontProperties).Show保存其字體設(shè)置
41、mFonts恢復(fù)其原有字體設(shè)置End Sub單元填充按鈕:圖10 單元填充按鈕Private Sub cmdBackGround_Click()選擇一個(gè)臨時(shí)單元Dim rng As RangeSet rng = mExcelApp.Selection保留原有設(shè)置Dim clrIndex, pClrIndex, p, pClr設(shè)置新的填充模式mExcelApp.Dialogs(xlDialogPatterns).Show保存設(shè)置恢復(fù)臨時(shí)單元以前設(shè)置End Sub保存單元格式設(shè)置的變量Private Sub cmdCancel_Click()Unload MeEnd SubPrivate Sub
42、cmdFormat_Click()FormatSelectedCells Trim(txtFormula)MsgBox 格式化完成!Unload MeEnd Sub3.2.2.(類模塊設(shè)計(jì)中包括“段”類和公式類)1 段類表示公式的一部分, 可能是字符串, 也可能是一個(gè)相對(duì)的位置.職責(zé): 將相對(duì)位置轉(zhuǎn)換為當(dāng)前的絕對(duì)位置根據(jù)當(dāng)前單元相對(duì)于公式原始位置的偏移, 計(jì)算絕對(duì)位置2 公式類職責(zé):1. 將公式字符串轉(zhuǎn)換為段對(duì)象(見: CSegment), 以表示其中的相對(duì)單元位置2. 根據(jù)提供的當(dāng)前行列號(hào), 得到當(dāng)前的公式字符串.Option Explicit公式的原始位置Private mAbsRow A
43、s LongPrivate mAbsCol As Long組成公式的段Private mSegments As Collection設(shè)置公式字符串Public Sub SetFormula(ByVal sFormula As String, ByVal absRow As Long, ByVal absCol As Long)這個(gè)公式字符串有很多信息類型、范圍 釋放原有的段集Set mSegments = Nothing定義新的段集Set mSegments = New CollectionmAbsRow = absRowmAbsCol = absCol解析公式(查找其中的相對(duì)單元位置: 以開
44、頭的單元)主要是從上面的 公式字符串里提取我們需要的 相對(duì)位置的信息Dim i As Integer, sChar As String, sSeg As StringDim blnInBrace As Boolean標(biāo)志: 當(dāng)前字符位置是否在引號(hào)中Dim blnGettingRelativeCell As Boolean標(biāo)志: 正在提取相對(duì)單元位置Dim seg As CSegmentFor i = 1 To Len(sFormula)sChar = Mid(sFormula, i, 1)Select Case sCharCase , 如果是引號(hào)blnInBrace = Not blnInBr
45、ace 是否在引號(hào)內(nèi)標(biāo)志取反Case 可能是相對(duì)單元位置If Not blnInBrace Then 不在引號(hào)嵌套中, 則確定是一個(gè)相對(duì)位置保存前面的段If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfsSeg = blnGettingRelativeCell = TruesChar = End IfEnd SelectIf blnGettingRelativeCell And sChar ThenIf Not IsPositionChar(sChar) Then如果遇到非位置字符,說明相對(duì)位置的字符串已經(jīng)結(jié)束AddSegment
46、 sSeg, True清空sSeg,為保存下一個(gè)段作準(zhǔn)備sSeg = blnGettingRelativeCell = FalseEnd IfEnd IfsSeg = sSeg & sChar 將當(dāng)前字符保存到sSeg中Next保存最后一個(gè)段(如果有的話)If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfEnd Sub以上主要功能實(shí)現(xiàn)是:公式類字符串中的信息有很多類型、范圍 需要從公式字符串里提取我們需要的相對(duì)位置信息。為相對(duì)位置的開始設(shè)置一個(gè)標(biāo)記 并找到和判斷相對(duì)位置信息進(jìn)行保存。判斷一個(gè)字符是否是表示單元位置的字符(字母或數(shù)字
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單元的數(shù)據(jù)相加,判斷其和是否大于等于4。我選擇的單元可能是從A1到D5的 那么就要將公式分成5個(gè) A1-D1; A2-D2; A3-D3 ;A4-D4 ;A5-D5;這5個(gè)范圍分別進(jìn)行上面的公式 再將這5個(gè)公式組合起來根據(jù)當(dāng)前位置, 取公式字符串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結(jié) 論我們根據(jù)COM組件和Office插件編程原理開發(fā)了本軟件,其中實(shí)現(xiàn)了對(duì)條件格式判斷
49、的功能。軟件雖小,但基本上能夠滿足輸入格式判斷的功能。用戶需要的條件各種各樣,有的是單個(gè)單元內(nèi)的數(shù)值比較、有的是多個(gè)單元內(nèi)的綜合比較,比較方式可以用公式表示。但輸入界面中只能輸入指定的字符串。如何根據(jù)字符串進(jìn)行單元內(nèi)容的計(jì)算這是這個(gè)軟件實(shí)現(xiàn)的難點(diǎn)。經(jīng)指導(dǎo)老師王老師的幫助和講解后終于可以完成輸入格式判斷的功能。由于時(shí)間倉促軟件中還存在一些可以改進(jìn)的地方。如:選擇單元時(shí)只能選擇列。如果要選擇行,則在公式輸入時(shí)的相對(duì)地址上就要相應(yīng)變化。如果我們?cè)黾觾蓚€(gè)窗口按鈕:一個(gè)行單元選擇,一個(gè)列單元選擇。這樣就可以解決選擇行比較時(shí)需要修改相對(duì)地址的問題。參考文獻(xiàn)1 趙建敏,郭慶.Visual Basic 6.0
50、編程指南M.北京:航空工業(yè)出版社,1999。2 李鴻吉.Visual Basic高級(jí)編程技術(shù)M.北京:科學(xué)出版社,2003。3 李懷明.Visual Basic6.0中文版參考詳解M.北京:清華大學(xué)出版社,1999。4 黃志峰.Visual Basic高級(jí)編程實(shí)例精解M.北京:北京國(guó)防工業(yè)出版社,2001。5 戴特(Deitel,M.H)美.Visual Basic 6大學(xué)教程M.北京:北京電子工業(yè)出版社,2003。6 盧毅.Visual Basic實(shí)例教程M.北京:北京科學(xué)出版社,2001。7 布拉德利(Bradley,J.C.)美,米爾斯波(Millspugh,A.C.)美.Visual
51、Basic 6.0高級(jí)編程M.北京:清華大學(xué)出版社,2003。8 張德強(qiáng).Visual Basic案例開發(fā)M.北京:中國(guó)水利水電出版社,2005。9 Dale Rogerson美.COM技術(shù)內(nèi)幕:微軟組件對(duì)象模型M.北京:清華大學(xué)出版社,1999。第 22頁 共 23 頁致 謝本文是在王燚老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識(shí)和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對(duì)順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!最后向在百忙之中評(píng)審本文的各位專家、老師表示衷心的感謝!聲 明本論文的工作是 2006年 3 月至2007年 6 月在成都信息工程學(xué)院 系完成的。文中除了特別加以標(biāo)注地方外,不
52、包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識(shí)產(chǎn)權(quán)的說明本人完全了解成都信息工程學(xué)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:(1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。(2)學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。(3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈(zèng)送和交換學(xué)位論文。(4)學(xué)校可允許學(xué)位論文被查閱或借閱。(5)學(xué)校可以公布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都
53、信息工程學(xué)院。特此聲明! 作者簽名: 年 月 日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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子商務(wù)市場(chǎng)平臺(tái)擴(kuò)展計(jì)劃書
- 合作協(xié)議書合同手寫
- 校園醫(yī)藥柜創(chuàng)業(yè)計(jì)劃書
- 院子圍墻維修合同協(xié)議書
- 2025年棱鏡透鏡項(xiàng)目規(guī)劃申請(qǐng)報(bào)告
- 奶茶店創(chuàng)業(yè)計(jì)劃書模板-圖文
- 電視網(wǎng)絡(luò)施工合同協(xié)議書
- 太原不銹鋼容器項(xiàng)目可行性研究報(bào)告模板范文
- 小酒館項(xiàng)目計(jì)劃書
- 生物質(zhì)廢棄物資源化利用技術(shù)研究
- 【MOOC】《學(xué)術(shù)交流英語》(東南大學(xué))章節(jié)中國(guó)大學(xué)慕課答案
- 常見異常心電圖識(shí)別及處理課件
- TCVN-2622-越南建筑防火規(guī)范(中文版)
- 重慶交通大學(xué)-黃璇-答辯通用PPT模板
- 中國(guó)醫(yī)院質(zhì)量安全管理 第4-13部分:醫(yī)療管理住院患者健康教育 T∕CHAS 10-4-13-2020
- 新滬教牛津版七年級(jí)上冊(cè)英語全冊(cè)教案
- 《航空專業(yè)英語》課件維修專業(yè)基礎(chǔ)英語R1
- 【課件】第17課實(shí)驗(yàn)與多元——20世紀(jì)以來的西方美術(shù)課件高中美術(shù)人教版(2019)美術(shù)鑒賞
- 2024年義務(wù)教育國(guó)家課程設(shè)置實(shí)施方案
- 電動(dòng)機(jī)調(diào)試運(yùn)行記錄
- 全國(guó)統(tǒng)一建筑工程基礎(chǔ)定額(共116頁)
評(píng)論
0/150
提交評(píng)論