EXCEL條件格式化工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計(論文)_第1頁
EXCEL條件格式化工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計(論文)_第2頁
EXCEL條件格式化工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計(論文)_第3頁
EXCEL條件格式化工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計(論文)_第4頁
EXCEL條件格式化工具的設(shè)計與實現(xiàn)—計算機畢業(yè)設(shè)計(論文)_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、畢畢 業(yè)業(yè) 設(shè)設(shè) 計計( 論論 文文)ExcelExcel 條件格式化工具的設(shè)計與實現(xiàn)條件格式化工具的設(shè)計與實現(xiàn)論文作者姓名:論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位專業(yè):申請學(xué)位類別:申請學(xué)位類別:指指導(dǎo)導(dǎo)教教師師姓姓名名(職職稱稱):論文提交日期:論文提交日期:ExcelExcel 條件格式化工具的設(shè)計與實現(xiàn)條件格式化工具的設(shè)計與實現(xiàn)摘要摘要Excel 是一個在各個領(lǐng)域中被廣泛應(yīng)用的電子表格軟件。通過它,我們可以很好的組織管理數(shù)據(jù),對數(shù)據(jù)進行統(tǒng)計分析等。在實際應(yīng)用中,我們發(fā)現(xiàn)經(jīng)常需要根據(jù)某種特定的條件,特殊顯示部分數(shù)據(jù)。雖然這種功能可以通過Excel 宏來實現(xiàn),但每次編寫類似的代碼使人感覺跟不

2、方便。Excel 同其它Office 組件一樣,提供了通過插件進行功能擴展的可能。通過編寫和安裝插件,我們可以幾乎任意地擴展 Excel 的功能,為我們的工作提供極大的便利。本文詳細介紹了一個 Excel 條件格式化軟件的設(shè)計和實現(xiàn)。該軟件使用 COM 組件技術(shù),根據(jù) Office 插件的接口要求,設(shè)計了一個 Excel 的插件。該插件在 Excel應(yīng)用程序的窗口中增加一個工具欄,并在其上創(chuàng)建了一個按鍵,用于打開格式化設(shè)置窗口。軟件可以對用戶輸入的、用字符串表達的判斷條件進行計算,并根據(jù)計算結(jié)果,將滿足條件的單元數(shù)據(jù)設(shè)置為用戶選擇的特殊格式(字體、顏色、字號、修飾等)關(guān)鍵詞:關(guān)鍵詞: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目目 錄錄 論文總頁數(shù):23 頁1 引言 .12 COM 組件的實現(xiàn)技術(shù) .

8、12.1 COM 組件技術(shù).12.2 接口 .22.3 插件技術(shù) .32.4 EXCEL 對象模型.. VB 編寫組件基本介紹.9.93 EXCEL 條件格式化工具的具體實現(xiàn) .123.1 插件接口方法 .123.2 EXCEL插件的實現(xiàn).13.13.13參考文獻.21致 謝.22聲 明.23第 1 頁 共 23 頁ExcelExcel 條件格式化工具的設(shè)計與實現(xiàn)條件格式化工具的設(shè)計與實現(xiàn)1 1 引言引言我們生活的這個世界是豐富多彩的,幾乎所有的知識都來自于視覺。也許無法記住一連串的數(shù)字,以及它們之間的關(guān)系和趨勢。但是可以很輕松地記住一幅圖畫或者一個曲線。Exce

9、l 就具有許多高級的制圖功能,同時使用起來也非常方便。它不僅可以用來制作電子表格、完成許多復(fù)雜的數(shù)據(jù)運算,還可以進行數(shù)據(jù)的分析和預(yù)測。Excel 文檔是實際工作學(xué)習(xí)中最為常用的文檔格式之一,為了增強 Word、Excel 等軟件的自動化能力,人們開發(fā)了各種提高辦公效率的軟件,它們大多數(shù)實用、專業(yè)性強。為了避免用戶做大量重復(fù)性的工作,提高Office 辦公效率,達到提高其實用功能的目的,可根據(jù)具體工作內(nèi)容要求,編寫出最具本地化、個性化、最合適的軟件。2 2 COMCOM 組件的實現(xiàn)技術(shù)組件的實現(xiàn)技術(shù)2.12.1 COMCOM 組件技術(shù)組件技術(shù)COM 是微軟公司為了計算機工業(yè)的軟件生產(chǎn)更加符合人類

10、的行為方式開發(fā)的一種新的軟件開發(fā)技術(shù)。在 COM 構(gòu)架下,人們可以開發(fā)出各種各樣的功能專一的組件,然后將它們按照需要組合起來,構(gòu)成復(fù)雜的應(yīng)用系統(tǒng)。由此帶來的好處是多方面的:可以將系統(tǒng)中的組件用新的替換掉,以便隨時進行系統(tǒng)的升級和定制;可以在多個應(yīng)用系統(tǒng)中重復(fù)利用同一個組件;可以方便的將應(yīng)用系統(tǒng)擴展到網(wǎng)絡(luò)環(huán)境下;COM 與語言,平臺無關(guān)的特性使所有的程序員均可充分發(fā)揮自己的才智與專長編寫組件模塊。COM 是開發(fā)軟件組件的一種方法。組件實際上是一些小的二進制可執(zhí)行程序,它們可以給應(yīng)用程序,操作系統(tǒng)以及其他組件提供服務(wù)。開發(fā)自定義的 COM 組件就如同開發(fā)動態(tài)的,面向?qū)ο蟮?API。多個 COM 對

11、象可以連接起來形成應(yīng)用程序或組件系統(tǒng)。并且組件可以在運行時刻,在不被重新鏈接或編譯應(yīng)用程序的情況下被卸下或替換掉。Microsoft 的許多技術(shù),如 ActiveX, DirectX 以及OLE 等都是基于 COM 而建立起來的。并且 Microsoft 的開發(fā)人員也大量使用 COM組件來定制他們的應(yīng)用程序及操作系統(tǒng)。COM 所含的概念并不止是在 Microsoft Windows 操作系統(tǒng)下才有效。COM 并不是一個大的 API,它實際上象結(jié)構(gòu)化編程及面向?qū)ο缶幊谭椒菢?,也是一種編程方法。在任何一種操作系統(tǒng)中,開發(fā)人員均可以遵循“COM 方法” 。一個應(yīng)用程序通常使由單個的二進制文件組成的

12、。第 2 頁 共 23 頁當(dāng)編譯器生成應(yīng)用程序之后,在對下一個版本重新編譯并發(fā)行新生成的版本之前,應(yīng)用程序一般不會發(fā)生任何變化。操作系統(tǒng),硬件及客戶需求的改變都必須等到整個應(yīng)用程序被重新生成。目前這種狀況已經(jīng)發(fā)生變化。開發(fā)人員開始將單個的應(yīng)用程序分隔成單獨多個獨立的部分,也既組件。這種做法的好處是可以隨著技術(shù)的不斷發(fā)展而用新的組件取代以有的組件。此時的應(yīng)用程序可以隨新組件不斷取代舊的組件而漸趨完善。而且利用已有的組件,用戶還可以快速的建立全新的應(yīng)用。傳統(tǒng)的做法是將應(yīng)用程序分割成文件,模塊或類,然后將它們編譯并鏈接成一個單模應(yīng)用程序。它與組件建立應(yīng)用程序的過程(稱為組件構(gòu)架)有很大的不同。一個組

13、件同一個微型應(yīng)用程序類似,即都是已經(jīng)編譯鏈接好并可以使用的二進制代碼,應(yīng)用程序就是由多個這樣的組件打包而得到的。單模應(yīng)用程序只有一個二進制代碼模塊。自定義組件可以在運行時刻同其他的組件連接起來以構(gòu)成某個應(yīng)用程序。在需要對應(yīng)用程序進行修改或改進時,只需要將構(gòu)成此應(yīng)用程序的組件中的某個用新的版本替換掉即可。COM 即組件對象模型,是關(guān)于如何建立組件以及如何通過組件建立應(yīng)用程序的一個規(guī)范,說明了如何可動態(tài)交替更新組件。使用組件的優(yōu)點:組件架構(gòu)的一個優(yōu)點就是應(yīng)用可以隨時間的流逝而發(fā)展進化。除此之外,使用組件還有一些可以使對以有應(yīng)用的升級更加方便和靈活的優(yōu)點,如應(yīng)用的定制,組件庫以及分布式組件等。使用組

14、件的種種優(yōu)點直接來源于可以將它們動態(tài)的插入或卸出應(yīng)用。為了實現(xiàn)這種功能,所有的組件必須滿足兩個條件:第一,組件必須動態(tài)鏈接;第二,它們必須隱藏(或封裝)其內(nèi)部實現(xiàn)細節(jié)。動態(tài)鏈接對于組件而言是一個至關(guān)重要的要求,而消息隱藏則是動態(tài)鏈接的一個必要條件。2.22.2 接口接口由于組件向外部隱藏了其內(nèi)部的細節(jié),因此客戶要使用組件時就必須通過一定的機制,也就是說要通過一定的方法來實現(xiàn)客戶與組件之間的通信,這就需要接口。所謂接口就是組件對外暴露的、向外部客戶提供服務(wù)的“連接點” 。外部的客戶見不到組件內(nèi)部的細節(jié),它所能看到的只是接口,客戶也是通過接口來獲取組件提供的服務(wù)。這有點像 OSI 網(wǎng)絡(luò)協(xié)議分層模型

15、,每一層就像一個組件,它內(nèi)部的實現(xiàn)細節(jié)對于其他層是不可見的;而每一層通過“服務(wù)接入點”向其上層提供服務(wù),這就像這里所說的接口。一般來說,接口總是固定的,也是公開的。組件的開發(fā)人員要實現(xiàn)這些接口,而客戶則通過接口獲得服務(wù)。正是接口的這種固定和公開,才使得組件和客戶能夠在不了解對方的情況下達成一致。第 3 頁 共 23 頁接口提供了兩個不同對象間的一種連接。實際上計算機程序是通過一組函數(shù)而連接起來的。這組函數(shù)實際上就定義了程序中不同部分的接口。DLL 的接口就是它所輸出的那些函數(shù)。COM 中的接口也涉及到一組由組件實現(xiàn)并提供給客戶使用的函數(shù)。對于 COM 來說,接口是一個包含一個函數(shù)指針數(shù)組的內(nèi)存

16、結(jié)構(gòu)。第一個數(shù)組包含的是一個由組件所實現(xiàn)的函數(shù)的地址。對于 COM 而言,接口就是此內(nèi)存結(jié)構(gòu),其它東西均是一個 COM 并不關(guān)心的實現(xiàn)細節(jié)。接口的作用:在 COM 中接口就是一切。對于客戶來說,一個組件就是一個接口集??蛻糁荒芡ㄟ^接口才能同 COM 組件打交道。從整體上講,客戶對于一個組件可以說是知之甚少的。在某些情況下,客戶甚至不必知道一個組件所提供的所有接口??蓮?fù)用應(yīng)用程序架構(gòu):說組件僅僅只是接口的實現(xiàn)細節(jié)當(dāng)然有點言過其實。不管怎么說,一個未被實現(xiàn)的接口實際上什么也不能完成。但是組件可從應(yīng)用程序中刪除并可用另外一個組合來取代之。只要新的組件支持同組件相同的接口,那么整個應(yīng)用程序?qū)⑷匀荒軌蚬?/p>

17、作。單個的組件并不能對整個應(yīng)用程序產(chǎn)生決定的作用。相反,用以連接組件的接口將對整個應(yīng)用程序產(chǎn)生決定性的作用。只要接口保持不變,那么組件可以任意地更換。接口同木板房中的大梁非常類似。這些大梁決定了整個房屋的結(jié)構(gòu)。同樣可以將應(yīng)用程序所用的組件替換掉,這樣應(yīng)用程序的行為將會發(fā)生變化,但從結(jié)構(gòu)上講,整個應(yīng)用程序并沒有發(fā)生任何變化。使用組件來構(gòu)造應(yīng)用程序的最大的優(yōu)點在于可以復(fù)用應(yīng)用程序的結(jié)構(gòu)。如果接口設(shè)計得好的話,將可以得到可復(fù)用極高的結(jié)構(gòu)。當(dāng)然使用接口除了可以設(shè)計出可復(fù)用的結(jié)構(gòu)外,還有其它若干優(yōu)點。COM 接口的其它優(yōu)點:接口使得客戶可以用同樣的方式來處理不同的組件。這種能力就被稱作是多態(tài)。這些優(yōu)點是

18、通過接口將某個特定的行為封閉起來而獲得的。2.32.3 插件技術(shù)插件技術(shù)插件是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。插件一般在宿主應(yīng)用程序上添加控制項,如菜單、工具按鍵等。插件響應(yīng)宿主程序中對這些項目的操作,并對宿主程序中的數(shù)據(jù)進行特定操作。插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫出來的程序。插件是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。第 4 頁 共 23 頁插件的本質(zhì)是在不修改程序主體的情況下對軟件功能進行加強,當(dāng)插件的接口被公開時,任何公司或個人都可以自己制作插件來解決一些操作上的不便或增加一些功能。插件還可以支持

19、多人合作開發(fā),不同的功能可以由不同的人來完成,而且由于不同插件之間互不影響,方便程序的調(diào)試和糾錯。插件一般在宿主應(yīng)用程序上添加控制項,如菜單、工具按鍵等。插件響應(yīng)宿主程序中對這些項目的操作,并對宿主程序中的數(shù)據(jù)進行特定操作。插件類型從廣義的范圍來看,插件有以下三種類型:1類似批命令的簡單插件。事實上這種插件的自由度非常低。運行這種插件后,會一步步要求用戶進行選擇/輸入,最后根據(jù)用戶的輸入來執(zhí)行一系列事先定義好的操作。這種插件一般是文本文件。功能比較單一,可擴展性極小。優(yōu)點是插件做起來非常方便,即使是對程序設(shè)計了解不多的人也可以制作。2使用一種特殊的腳本語言來實現(xiàn)的插件。這種插件比較難寫,需要軟

20、件開發(fā)者自己制作一個程序解釋內(nèi)核。比如微軟惹了很多麻煩的宏就是這種類型的。有一套著名的 Office 輔助工具就是完全用 Office 內(nèi)置的 VBScript 寫成的。這種方法的優(yōu)點在于無需使用其它工具來制作插件,軟件本身就可以實現(xiàn),普遍出現(xiàn)于各種辦公自動化軟件中。3利用已有的程序開發(fā)環(huán)境來制作插件。例如 PhotoShop 等軟件使用的方法。使用這種方法的軟件在程序主體中建立了多個自定義的接口,使插件能夠自由訪問程序中的各種資源。這種插件的優(yōu)勢在于自由度極大,可以無限發(fā)揮插件開發(fā)者的創(chuàng)意,這種插件是狹義范圍的插件,也是真正意義上的插件。而這種插件機制的編寫相對復(fù)雜,對于插件接口之間的協(xié)調(diào)比

21、較困難。2.42.4 EXCELEXCEL 對象模型對象模型 ExcelExcel 對象模型的類以及之間的關(guān)系對象模型的類以及之間的關(guān)系Excel 組件中定義了大量的類。下圖顯示了我們在軟件開發(fā)中使用到的一些主要的類和它們之間的關(guān)系。第 5 頁 共 23 頁ApplicationWorkBook*1WorkSheet*1Chart*1Range*1Font*11*1*1*1*1*圖 1 Excel 對象模型片斷.2 使用使用 ExcelExcel在 VB 應(yīng)用程序中使用 Excel,實質(zhì)是將 Excel 作為一個外部對象來引用,由 Excel 對象模型提供能從 VB 應(yīng)用程序內(nèi)

22、部來程序化操縱的對象以及相關(guān)的屬性、方法和事件。為了能從 VB 應(yīng)用程序中訪問 Excel 豐富的內(nèi)部資源,使Excel 應(yīng)用程序運行得更快,需要在 VB 工程中添加對 Excel 類型庫的引用。具體步驟如下:a)從 VB6工程菜單中選擇引用;b) 在引用對話框中選擇 Excel 類型庫:Microsoft Excel 11.0 Object Library;c)單擊左邊小方框,使之出現(xiàn)符號;d)按確定退出。注:要想在 VB 應(yīng)用程序中調(diào)用 Excel,你的計算機系統(tǒng)中必須安裝Excel。 引用引用 ApplicationApplication 對象對象Application 對象是 Exce

23、l 對象模型的頂層,表示整個 Excel 應(yīng)用程序。在 VB 應(yīng)用程序中調(diào)用 Excel,就是使用 Application 對象的屬性、方法和事件。為此,首先要聲明對象變量:Dim VBExcel As Object 第 6 頁 共 23 頁或直接聲明為 Excel 對象:Dim VBExcel As Excel.Application 在聲明對象變量之后,可用 CreateObject 函數(shù)或 GetObject 函數(shù)給變量賦值。前者創(chuàng)建一個新的 Excel 實例,后者取得當(dāng)前打開的 Excel 實例。兩個函數(shù)均返回對 Excel 的 Application 對象引用。a)用 CreateO

24、bject 函數(shù)生成新的對象引用:Set VBExcel=CreateObject (Excel.Application) 字符串Excel.Application是提供 Excel 應(yīng)用程序的編程 ID。b)用 GetObject 函數(shù)打開已存在的對象引用:Set AppExcel=GetObject(SAMP.XLS, Excel.Application) 上面語句打開文件 SAMP.XLS。.4 ApplicationApplication 對象常用的屬性、方法對象常用的屬性、方法Visible 屬性取 True 或 False,表明 Excel 應(yīng)用程序是否可見。Lef

25、t,Top屬性 Excel 窗口的位置; Height, Width 屬性 Excel 窗口的大??;WindowState 屬性 指定窗口的狀態(tài),取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。Quit 方法 退出 Microsoft Excel;Calculate 方法 重新計算所有打開的工作簿、工作表或單元格。Evaluate 方法 求值數(shù)學(xué)表達式并返回結(jié)果。示例 1:求值數(shù)學(xué)表達式:Dim VBExcel As ObjectSet VBExcel=CreateObject (Excel.Application)X=VBExcel. Eva

26、luate (3+5*(cos (1/log (99. 9) 在 VB 應(yīng)用程序中使用 Excel 應(yīng)用程序,就是通過 Application 對象的屬性、方法來獲得其它 Excel 對象,如工作簿、工作表、單元等待。下面分類給出其中常用的屬性和方法。第 7 頁 共 23 頁.5 使用工作薄使用工作薄Workbook 對象代表 Excel 應(yīng)用程序中當(dāng)前打開的一個工作簿,包含在Workbooks 集合中??梢酝ㄟ^ Workbooks 集合或表示當(dāng)前活動工作簿的 Active Workbook 對象訪問 Workbook 對象。常用的方法有:Add 方法 創(chuàng)建新的空白工作簿,并將

27、其添加到集合中。 Open 方法 打開工作簿。 Activate 方法 激活工作簿,使指定工作簿變?yōu)榛顒庸ぷ鞑?,以便作?Active Workbook 對象使用。 Save 方法 按當(dāng)前路徑和名稱保存現(xiàn)有工作簿(如是首次保存,則將其保存到缺省名稱中,如 BOOK1.XLS)。 SaveAs 方法 首次保存工作簿或用另一名稱保存工作簿。 Close 方法 關(guān)閉工作簿。 PrintOut 方法 打印工作簿,語法為:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)可選參數(shù):From:打印的起始頁號。如省略將從起始位置開始打

28、印。To:打印的終止頁號。如省略將打印至最后一頁。Copies:要打印的份數(shù)。如省略將只打印一份。Preview:如果為 True 則 Excel 打印指定對象之前進行打印預(yù)覽。如果為False,或省略則立即打印該對象。Printer:設(shè)置活動打印機的名稱。ToFile:如果為 True 則打印輸出到文件。Collate:如果為 True 則逐份打印每份副本。 下面語句將活動工作簿的 2 到 5 頁打印 3 份:ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 示例 2:生成、保存、關(guān)閉工作簿第 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 方法 創(chuàng)建新工作表并將其添加到工作簿中。 Select 方法 選擇工作表。 Copy 方法 復(fù)制工作表。 Move 方法 將指定工作表移到工作簿的另一位置。 Delete 方法 刪除指定工作表。 PrintOut 方法 打印工作表示例:將 C 盤工作簿中的工作表復(fù)制到 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 對象代表工作表的某一單元格、某一行、某一列、某一選定區(qū)域或者某一三維區(qū)域。Range 屬性 Range (arg)其中 arg 為 A1-樣式符號,表示單個單元格或單元格區(qū)域。Range 對象的主要屬性和方法包括:Ce

32、lls 屬性 Cells (row, col )(其中 row 為行號,col 為列號)表示單個單元格。 ColumnWidth 屬性 指定區(qū)域中所有列的列寬。 Rowl3eight 屬性 指定區(qū)域中所有行的行寬。 Value 屬性 指定區(qū)域中所有單元格的值(缺省屬性)。 Formula 屬性 指定單元格的公式,由 A1-樣式引用。 Select 方法 選擇范圍。 Copy 方法 將范圍的內(nèi)容復(fù)制到剪貼板。 C1earContents 方法 清除范圍的內(nèi)容。 Delete 方法 刪除指定單元范圍。 以上簡要介紹了 Excel 對象模型中部分對象及其屬性和方法,更詳細的信息可參閱 Excel 2

33、000 幫助中的Microsoft Excel Visual Basic 參考一節(jié)的內(nèi)容。實際上,Microsoft Office 家族的 Word,PowerPoint, Access 和Project 等應(yīng)用程序都可以在 VB 應(yīng)用程序中調(diào)用,其原理和步驟完全相同,只是其對象模型有所不同而已。2.52.5 VBVB 編寫組件基本介紹編寫組件基本介紹 在在 VBVB 中編寫中編寫 COMCOM 組件組件1、新建 ActiveX DLL 工程第 10 頁 共 23 頁圖 2 ActiveX DLL 工程注意:該類型工程缺省添加的不是窗體,而是類模塊。2、修改工程屬性菜單:工程屬性圖 3 菜單:

34、工程屬性其中,工程名稱就是組件的名稱。3、修改類模塊的性質(zhì)第 11 頁 共 23 頁圖 4 模塊的性質(zhì)說明:其中的 Instancing 是組件對象的實例化方式。5-MultiUse:可以創(chuàng)建多個實例。1-Private: 私有對象。不能在外部程序中創(chuàng)建它的實例,但公開其接口。4、定義對象的屬性和方法與一般 VB 類相同。如添加以下代碼,定義了該對象缺省接口的 Hello 方法:Public Sub Hello(sMsg As String)MsgBox sMsgEnd Sub如果定義為 Private,則不是接口的方法,而是私有對象中的方法,對外不公開。5、編譯生成 COM 組件菜單:文件生

35、成6、調(diào)試和使用該 COM 組件(1) 在當(dāng)前工程組中添加一個標準 EXE 的 VB 工程。菜單:文件添加工程。第 12 頁 共 23 頁(2) 在新工程中引用前面的 ActiveX DLL 工程。COM 組件工程的名稱將出現(xiàn)在組件選擇對話框的列表中圖 5 引用工程(3)將新工程設(shè)置為啟動工程。圖 6 啟動工程(4)在新工程中添加代碼,創(chuàng)建組件對象,調(diào)用其 Hello 方法。Private Sub Command1_Click()Dim myVBObj As MyVBCom.VBComObjectSet myVBObj = New MyVBCom.VBComObjectmyVBObj.Hell

36、o Hello world.第 13 頁 共 23 頁End Sub(5)設(shè)置斷點,運行。3 3 ExcelExcel 條件格式化工具的具體實現(xiàn)條件格式化工具的具體實現(xiàn)3.13.1 插件接口方法插件接口方法當(dāng) VB 運行時,在 Add-In 菜單中裝載組件以后,VB 就會調(diào)用組件中IDTExtensibility 對象中的 OnConnection 方法。在 OnConnection 方法里定義Application 對象變量,并調(diào)用 CommandBars.Add 方法,就可在程序運行時加載工具欄。在“引用”對話框中選擇“Microsoft Office 8.0 Object library

37、”復(fù)選框,可以通過“對象瀏覽器”訪問并瀏覽各種命令條對象。因為菜單和工具欄屬于相同的對象庫,它們都將通過 CommandBarControl對象被引用。一個菜單條命令條可以包括幾個菜單項,每個菜單項本身也是一個命令條,而且它又可以包括若干個菜單命令,每條命令依然是一個命令條。利用這種模式可以很容易地在開發(fā)環(huán)境中放置外接程序。使用 commandBars 集合對象用外接程序來添加命令欄和控件。在OnConnection 事件過程定義 Application、commandbars 對象變量,此過程創(chuàng)建新的命令條按鈕,并返回對它的對象變量,并定義 commandbar 上按鍵的事件。3.23.2

38、ExcelExcel 插件的實現(xiàn)插件的實現(xiàn).1 插件實現(xiàn)的功能插件實現(xiàn)的功能(1)在 Excel 中建立 3 列:姓名,平時,考試。并輸入模擬數(shù)據(jù)。(2)選擇所有學(xué)生姓名單元;(3)點擊插件的按鍵,出現(xiàn)對話框。(4)在其中輸入格式化的條件(類似于 Excel 的公式,只是將相對單元位置的表示方式,加了一個符號。如:sum(A1:D1)=4, 表示將 A1 到 D1 單元的數(shù)據(jù)相加,判斷其和是否大于等于 4。相對的含義是:對當(dāng)前單元而言,求和的是 A1 到 D1。如果當(dāng)前單元的行列加了 1,則求和的將是 B2 到 E2。(即,求和的單元相對于當(dāng)前單元的偏移量不變)。本例中輸入:B

39、2*30/100+C2*70/10060(5)點擊字體按鍵,選擇字體、顏色等;第 14 頁 共 23 頁(6)點擊填充按鍵,選擇填充色和模式;(7)點擊“格式化”按鍵。.2 具體功能實現(xiàn)具體功能實現(xiàn) 設(shè)計器設(shè)計器圖 7 設(shè)計器 窗體的實現(xiàn)窗體的實現(xiàn)圖 8 窗體設(shè)置字體按鈕:第 15 頁 共 23 頁圖 9 設(shè)置字體按鈕選擇字體Private Sub cmdSetFont_Click()選擇一個臨時單元Dim rng As RangeSet rng = mExcelApp.Selection保存其原有字體設(shè)置Dim size

40、, italic, underline, strikethrough, bold, color, style, nameitalic = rn使用 Excel 的標準對話框設(shè)置其字體mExcelApp.Dialogs(xlDialogFontProperties).Show保存其字體設(shè)置mFonts恢復(fù)其原有字體設(shè)置第 16 頁 共 23 頁End Sub單元填充按鈕:圖 10 單元填充按鈕Private Sub cmdBackGround_Click()選擇一個臨時單元Dim rng As RangeSet rng = mExcelApp.Selection保留原有設(shè)置Dim clrInde

41、x, pClrIndex, p, pClr設(shè)置新的填充模式mExcelApp.Dialogs(xlDialogPatterns).Show保存設(shè)置恢復(fù)臨時單元以前設(shè)置第 17 頁 共 23 頁End Sub保存單元格式設(shè)置的變量Private Sub cmdCancel_Click()Unload MeEnd SubPrivate Sub cmdFormat_Click()FormatSelectedCells Trim(txtFormula)MsgBox 格式化完成!Unload MeEnd Sub 類模塊設(shè)計:類模塊設(shè)計:(類模塊設(shè)計中包括“段”類和公式類)1

42、段類表示公式的一部分, 可能是字符串, 也可能是一個相對的位置.職責(zé): 將相對位置轉(zhuǎn)換為當(dāng)前的絕對位置根據(jù)當(dāng)前單元相對于公式原始位置的偏移, 計算絕對位置2 公式類職責(zé):1. 將公式字符串轉(zhuǎn)換為段對象(見: CSegment), 以表示其中的相對單元位置2. 根據(jù)提供的當(dāng)前行列號, 得到當(dāng)前的公式字符串.Option Explicit公式的原始位置Private mAbsRow As LongPrivate mAbsCol As Long組成公式的段Private mSegments As Collection設(shè)置公式字符串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標志: 當(dāng)前字符位置是否在引號中Dim blnGettingRelativeCell As Boolean標志: 正在提取相對單元位置Dim seg As CSegmentFor i = 1 To Len(sFormula)sChar = Mid(sFormula, i, 1)Select Case sCharCase , 如果是引號blnInBrace = Not blnInBrace 是否在引號內(nèi)標志取反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如果遇到非位置字符,說明相對位置的字符串已經(jīng)結(jié)束AddSegment sSeg, True清空 sSeg,為保存下一個段作準備第 19 頁 共 23 頁sSeg = blnGettingRelativeCell = FalseEnd IfEnd IfsSeg

46、 = sSeg & sChar 將當(dāng)前字符保存到 sSeg 中Next保存最后一個段(如果有的話)If sSeg ThenAddSegment sSeg, blnGettingRelativeCellEnd IfEnd Sub以上主要功能實現(xiàn)是:公式類字符串中的信息有很多類型、范圍 需要從公式字符串里提取我們需要的相對位置信息。為相對位置的開始設(shè)置一個標記 并找到和判斷相對位置信息進行保存。判斷一個字符是否是表示單元位置的字符(字母或數(shù)字)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 單元的數(shù)據(jù)相加,判斷其和是否大于等于 4。我選擇的單元可能是從 A1 到 D5 的 那么就要將公式分成 5 個 A1-D1; A2-D2; A3-D3 ;A4-D4 ;A5-D5;這 5 個范圍分別進行上面的公式 再將這 5 個公式組合起來根據(jù)當(dāng)前位置, 取公式字符串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 頁結(jié)結(jié) 論論我們根據(jù) COM 組件和 Office 插件編程原理開發(fā)了本軟件,其中實現(xiàn)了對條件格式判斷的功能。軟件雖小,但基本上能夠滿足輸入格式判斷的功能。用戶需要的條件各種各

49、樣,有的是單個單元內(nèi)的數(shù)值比較、有的是多個單元內(nèi)的綜合比較,比較方式可以用公式表示。但輸入界面中只能輸入指定的字符串。如何根據(jù)字符串進行單元內(nèi)容的計算這是這個軟件實現(xiàn)的難點。經(jīng)指導(dǎo)老師王老師的幫助和講解后終于可以完成輸入格式判斷的功能。由于時間倉促軟件中還存在一些可以改進的地方。如:選擇單元時只能選擇列。如果要選擇行,則在公式輸入時的相對地址上就要相應(yīng)變化。如果我們增加兩個窗口按鈕:一個行單元選擇,一個列單元選擇。這樣就可以解決選擇行比較時需要修改相對地址的問題。參考文獻參考文獻1 趙建敏,郭慶.Visual Basic 6.0 編程指南M.北京:航空工業(yè)出版社,1999。2 李鴻吉.Visu

50、al Basic 高級編程技術(shù)M.北京:科學(xué)出版社,2003。3 李懷明.Visual Basic6.0 中文版參考詳解M.北京:清華大學(xué)出版社,1999。4 黃志峰.Visual Basic 高級編程實例精解M.北京:北京國防工業(yè)出版社,2001。5 戴特(Deitel,M.H)美.Visual Basic 6 大學(xué)教程M.北京:北京電子工業(yè)出版社,2003。6 盧毅.Visual Basic 實例教程M.北京:北京科學(xué)出版社,2001。7 布拉德利(Bradley,J.C.)美,米爾斯波(Millspugh,A.C.)美.Visual Basic 6.0 高級編程M.北京:清華大學(xué)出版社,

51、2003。8 張德強.Visual Basic 案例開發(fā)M.北京:中國水利水電出版社,2005。9 Dale Rogerson美.COM 技術(shù)內(nèi)幕:微軟組件對象模型M.北京:清華大學(xué)出版社,1999。第 22 頁 共 23 頁致致 謝謝本文是在王燚老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識和嚴謹?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!第 22 頁 共 23 頁聲聲 明明本論文的工作是 2006 年 3 月至 2007 年 6 月在成都信息工程學(xué)院 系完成的。文中除了特別加以標注地方外,不包含他

52、人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識產(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ù)制、贈送和交換學(xué)位論文。(4)學(xué)??稍试S學(xué)位論文被查閱或借閱。(5)學(xué)校可以公布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后遵守此規(guī)定) 。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息

53、工程學(xué)院。特此聲明! 作者簽名: 年 月 日第 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論