格式化EXCEL表格的工具的設(shè)計(jì)與測(cè)試_第1頁
格式化EXCEL表格的工具的設(shè)計(jì)與測(cè)試_第2頁
格式化EXCEL表格的工具的設(shè)計(jì)與測(cè)試_第3頁
格式化EXCEL表格的工具的設(shè)計(jì)與測(cè)試_第4頁
格式化EXCEL表格的工具的設(shè)計(jì)與測(cè)試_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、格式化格式化 EXCELEXCEL 表格的工具的設(shè)計(jì)與測(cè)試表格的工具的設(shè)計(jì)與測(cè)試 摘要摘要 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 條件格式化軟件的設(shè)計(jì)和實(shí)現(xiàn)。該軟件

2、使用 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)鍵詞:關(guān)鍵詞:Excel 插件;COM 組件;接口 The Design and Implementation of the Conditionally Formatting Tool for Excel Abstract Excel is an el

3、ectronic 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

4、 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 add-in, to allow users to expand its functionalities. By writing addins for Excel, we can almost unlimitedly to

5、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 by the COM component technique according to the interface requirements of Excel. The conditional formatting addi

6、n 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 user in the form of string, and according to the result, it sets the format of the cells matching the use-defi

7、ned 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 引言 .1 2 COM 組件的實(shí)現(xiàn)技術(shù) .1 2.1 COM 組件技術(shù).1 2.2 接口 .2 2.3 插件技術(shù) .3 2.4 EXCEL 對(duì)象模型.4 2.4.1 Excel 對(duì)象模型的類以及之間的關(guān)系.4 2.4.2 使用 Excel.5 2.4.3

8、引用 Application 對(duì)象 .5 2.4.4 Application 對(duì)象常用的屬性、方法.6 2.4.5 使用工作薄 .6 2.4.6 使用工作表 .8 2.5 VB 編寫組件基本介紹.9 2.5.2 在 VB 中編寫 COM 組件 .9 3 EXCEL 條件格式化工具的具體實(shí)現(xiàn) .12 3.1 插件接口方法 .12 3.2 EXCEL插件的實(shí)現(xiàn).13 3.2.1 插件實(shí)現(xiàn)的功能.13 3.2.2 具體功能實(shí)現(xiàn).13 參考文獻(xiàn).21 ExcelExcel 條件格式化工具的設(shè)計(jì)與實(shí)現(xiàn)條件格式化工具的設(shè)計(jì)與實(shí)現(xiàn) 1 1 引言引言 我們生活的這個(gè)世界是豐富多彩的,幾乎所有的知識(shí)都來自于視覺

9、。也許 無法記住一連串的數(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 2 COMCOM 組件

10、的實(shí)現(xiàn)技術(shù)組件的實(shí)現(xiàn)技術(shù) 2.12.1 COMCOM 組件技術(shù)組件技術(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)制可

11、執(zhí)行程序, 它們可以給應(yīng)用程序,操作系統(tǒng)以及其他組件提供服務(wù)。開發(fā)自定義的 COM 組 件就如同開發(fā)動(dòng)態(tài)的,面向?qū)ο蟮?API。多個(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é)

12、構(gòu)化編程 及面向?qū)ο缶幊谭椒菢?,也是一種編程方法。在任何一種操作系統(tǒng)中,開發(fā) 人員均可以遵循“COM 方法” 。一個(gè)應(yīng)用程序通常使由單個(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)用。

13、 傳統(tǒng)的做法是將應(yīng)用程序分割成文件,模塊或類,然后將它們編譯并鏈接成一 個(gè)單模應(yīng)用程序。它與組件建立應(yīng)用程序的過程(稱為組件構(gòu)架)有很大的不 同。一個(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):組件

14、架構(gòu)的 一個(gè)優(yōu)點(diǎn)就是應(yīng)用可以隨時(shí)間的流逝而發(fā)展進(jìn)化。除此之外,使用組件還有一 些可以使對(duì)以有應(yīng)用的升級(jí)更加方便和靈活的優(yōu)點(diǎn),如應(yīng)用的定制,組件庫以 及分布式組件等。使用組件的種種優(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.22.2 接口接口 由于組件向外部隱藏了其內(nèi)部的細(xì)節(jié),因此客戶要使用組件時(shí)就必須通過 一定的機(jī)制,也就是說要通過一定的方法來實(shí)現(xiàn)客戶與組件之間的通信,這就 需要接口。所謂

15、接口就是組件對(duì)外暴露的、向外部客戶提供服務(wù)的“連接點(diǎn)” 。 外部的客戶見不到組件內(nèi)部的細(xì)節(jié),它所能看到的只是接口,客戶也是通過接 口來獲取組件提供的服務(wù)。這有點(diǎn)像 OSI 網(wǎng)絡(luò)協(xié)議分層模型,每一層就像一個(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í)際上就定義了

16、程序中不同部分的接口。DLL 的接 口就是它所輸出的那些函數(shù)。COM 中的接口也涉及到一組由組件實(shí)現(xiàn)并提供給 客戶使用的函數(shù)。對(duì)于 COM 來說,接口是一個(gè)包含一個(gè)函數(shù)指針數(shù)組的內(nèi)存 結(jié)構(gòu)。第一個(gè)數(shù)組包含的是一個(gè)由組件所實(shí)現(xiàn)的函數(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):說組件僅僅只是接口

17、的實(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) 生決定的作用。相反,用以連接組件的接口將對(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)。

18、如果接口設(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.32.3 插件技術(shù)插件技術(shù) 插件是一類特殊的組件。它的目的不是為一般應(yīng)用程序使用,而是專為特 定的應(yīng)用程序使用。插件一般在宿主應(yīng)用程序上添加控制項(xiàng),如菜單、工具按 鍵等。插件響應(yīng)宿主程序中對(duì)這些項(xiàng)目的操作,并對(duì)宿主程序中的數(shù)據(jù)進(jìn)行特 定操作。 插件是一種遵循一定規(guī)范的應(yīng)用程序接口編寫出來的程序。插件是一類特 殊的組件。它的目的

19、不是為一般應(yīng)用程序使用,而是專為特定的應(yīng)用程序使用。 插件的本質(zhì)是在不修改程序主體的情況下對(duì)軟件功能進(jìn)行加強(qiáng),當(dāng)插件的接口 被公開時(shí),任何公司或個(gè)人都可以自己制作插件來解決一些操作上的不便或增 加一些功能。插件還可以支持多人合作開發(fā),不同的功能可以由不同的人來完 成,而且由于不同插件之間互不影響,方便程序的調(diào)試和糾錯(cuò)。插件一般在宿 主應(yīng)用程序上添加控制項(xiàng),如菜單、工具按鍵等。插件響應(yīng)宿主程序中對(duì)這些 項(xiàng)目的操作,并對(duì)宿主程序中的數(shù)據(jù)進(jìn)行特定操作。插件類型從廣義的范圍來 看,插件有以下三種類型: 1類似批命令的簡(jiǎn)單插件。事實(shí)上這種插件的自由度非常低。運(yùn)行這種插 件后,會(huì)一步步要求用戶進(jìn)行選擇/輸

20、入,最后根據(jù)用戶的輸入來執(zhí)行一系列事 先定義好的操作。這種插件一般是文本文件。功能比較單一,可擴(kuò)展性極小。 優(yōu)點(diǎn)是插件做起來非常方便,即使是對(duì)程序設(shè)計(jì)了解不多的人也可以制作。 2使用一種特殊的腳本語言來實(shí)現(xiàn)的插件。這種插件比較難寫,需要軟件 開發(fā)者自己制作一個(gè)程序解釋內(nèi)核。比如微軟惹了很多麻煩的宏就是這種類型 的。有一套著名的 Office 輔助工具就是完全用 Office 內(nèi)置的 VBScript 寫成的。 這種方法的優(yōu)點(diǎn)在于無需使用其它工具來制作插件,軟件本身就可以實(shí)現(xiàn),普 遍出現(xiàn)于各種辦公自動(dòng)化軟件中。 3利用已有的程序開發(fā)環(huán)境來制作插件。例如 PhotoShop 等軟件使用的方 法。使

21、用這種方法的軟件在程序主體中建立了多個(gè)自定義的接口,使插件能夠 自由訪問程序中的各種資源。這種插件的優(yōu)勢(shì)在于自由度極大,可以無限發(fā)揮 插件開發(fā)者的創(chuàng)意,這種插件是狹義范圍的插件,也是真正意義上的插件。而 這種插件機(jī)制的編寫相對(duì)復(fù)雜,對(duì)于插件接口之間的協(xié)調(diào)比較困難。 2.42.4 EXCELEXCEL 對(duì)象模型對(duì)象模型 .1 ExcelExcel 對(duì)象模型的類以及之間的關(guān)系對(duì)象模型的類以及之間的關(guān)系 Excel 組件中定義了大量的類。下圖顯示了我們?cè)谲浖_發(fā)中使用到的一些 主要的類和它們之間的關(guān)系。 Application WorkBook * 1 WorkSheet *1 Ch

22、art * 1 Range * 1 Font * 1 1 * 1* 1 * 1 * 1 * 圖 1 Excel 對(duì)象模型片斷 .2 使用使用 ExcelExcel 在 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ì)話框中選擇 Ex

23、cel 類型庫:Microsoft Excel 11.0 Object Library; c)單擊左邊小方框,使之出現(xiàn)符號(hào); d)按確定退出。 注:要想在 VB 應(yīng)用程序中調(diào)用 Excel,你的計(jì)算機(jī)系統(tǒng)中必須安裝 Excel。 .3 引用引用 ApplicationApplication 對(duì)象對(duì)象 Application 對(duì)象是 Excel 對(duì)象模型的頂層,表示整個(gè) Excel 應(yīng)用程序。 在 VB 應(yīng)用程序中調(diào)用 Excel,就是使用 Application 對(duì)象的屬性、方法和事件。 為此,首先要聲明對(duì)象變量: Dim VBExcel As Object 或直接聲明為 Ex

24、cel 對(duì)象: Dim VBExcel As Excel.Application 在聲明對(duì)象變量之后,可用 CreateObject 函數(shù)或 GetObject 函數(shù)給變量賦值。 前者創(chuàng)建一個(gè)新的 Excel 實(shí)例,后者取得當(dāng)前打開的 Excel 實(shí)例。兩個(gè)函數(shù)均 返回對(duì) Excel 的 Application 對(duì)象引用。 a)用 CreateObject 函數(shù)生成新的對(duì)象引用: Set VBExcel=CreateObject (Excel.Application) 字符串Excel.Application是提供 Excel 應(yīng)用程序的編程 ID。 b)用 GetObject 函數(shù)打開已存在

25、的對(duì)象引用: Set AppExcel=GetObject(SAMP.XLS, Excel.Application) 上面語句打開文件 SAMP.XLS。 .4 ApplicationApplication 對(duì)象常用的屬性、方法對(duì)象常用的屬性、方法 Visible 屬性取 True 或 False,表明 Excel 應(yīng)用程序是否可見。Left,Top 屬性 Excel 窗口的位置; Height, Width 屬性 Excel 窗口的大小; WindowState 屬性 指定窗口的狀態(tài),取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺

26、省)。Quit 方法 退出 Microsoft Excel;Calculate 方法 重新計(jì)算所有打開的工作簿、工作表或單元格。 Evaluate 方法 求值數(shù)學(xué)表達(dá)式并返回結(jié)果。 示例 1:求值數(shù)學(xué)表達(dá)式: Dim VBExcel As Object Set VBExcel=CreateObject (Excel.Application) X=VBExcel. Evaluate (3+5*(cos (1/log (99. 9) 在 VB 應(yīng)用程序中使用 Excel 應(yīng)用程序,就是通過 Application 對(duì)象的屬 性、方法來獲得其它 Excel 對(duì)象,如工作簿、工作表、單元等待。下面分類

27、給 出其中常用的屬性和方法。 .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)榛顒?dòng)工作簿,以便作為 Active Workbook 對(duì)象使用。 Save 方法 按當(dāng)前路徑和名稱保存現(xiàn)有工作簿(如是首次保存,則將其保存

28、到缺 省名稱中,如 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:如果為 True 則 Excel 打印指定對(duì)象之前進(jìn)行打印預(yù)覽。如果為 False,或省略則立即打印該對(duì)象。

29、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.Application Set VBExcel= CreateObject(Excel.Application) With VBExcel .Workbooks.Add With ActiveWorkbook .Save AsC

30、: Temp OUTPUT.XLS .Close End With Quit End With .6 使用工作表使用工作表 Sheets 集合表示工作簿中所有的工作表。可以通過 Sheets 集合來訪問、 激活、增加、更名和刪除工作表。一個(gè) Worksheet 對(duì)象代表一個(gè)工作表。 Worksheets 屬性 返回 Sheets 集合。 Name 屬性 工作表更名。 Add 方法 創(chuàng)建新工作表并將其添加到工作簿中。 Select 方法 選擇工作表。 Copy 方法 復(fù)制工作表。 Move 方法 將指定工作表移到工作簿的另一位置。 Delete 方法 刪除指定工作表。 Print

31、Out 方法 打印工作表 示例:將 C 盤工作簿中的工作表復(fù)制到 A 盤工作簿中 Dim VBExcel As Excel.Application Set 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(

32、OUTPUT.XLS).Close .Workbooks(OUTPUTI.XLS).Close .Quit End 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ū)域中

33、所有行的行寬。 Value 屬性 指定區(qū)域中所有單元格的值(缺省屬性)。 Formula 屬性 指定單元格的公式,由 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 和 Pr

34、oject 等應(yīng)用程序都可以在 VB 應(yīng)用程序中調(diào)用,其原理和步驟完全相同,只 是其對(duì)象模型有所不同而已。 2.52.5 VBVB 編寫組件基本介紹編寫組件基本介紹 .2 在在 VBVB 中編寫中編寫 COMCOM 組件組件 1、新建 ActiveX DLL 工程 圖 2 ActiveX DLL 工程 注意:該類型工程缺省添加的不是窗體,而是類模塊。 2、修改工程屬性 菜單:工程屬性 圖 3 菜單:工程屬性 其中,工程名稱就是組件的名稱。 3、修改類模塊的性質(zhì) 圖 4 模塊的性質(zhì) 說明:其中的 Instancing 是組件對(duì)象的實(shí)例化方式。 5-MultiUse:可以創(chuàng)建多個(gè)實(shí)

35、例。 1-Private: 私有對(duì)象。不能在外部程序中創(chuàng)建它的實(shí)例,但公開其接口。 4、定義對(duì)象的屬性和方法 與一般 VB 類相同。如添加以下代碼,定義了該對(duì)象缺省接口的 Hello 方法: Public Sub Hello(sMsg As String) MsgBox sMsg End Sub 如果定義為 Private,則不是接口的方法,而是私有對(duì)象中的方法,對(duì)外不公 開。 5、編譯生成 COM 組件 菜單:文件生成 6、調(diào)試和使用該 COM 組件 (1) 在當(dāng)前工程組中添加一個(gè)標(biāo)準(zhǔn) EXE 的 VB 工程。 菜單:文件添加工程。 (2) 在新工程中引用前面的 ActiveX DLL 工程

36、。 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.VBComObject Set myVBObj = New MyVBCom.VBComObject myVBObj.Hello Hello world. End Sub (5)設(shè)置斷點(diǎn),運(yùn)行。 3 3 ExcelExcel 條件格式化工具的具體實(shí)現(xiàn)條件格式化工具的具體實(shí)現(xiàn) 3.13.1 插件接口方法插件

37、接口方法 3.23.2 ExcelExcel 插件的實(shí)現(xiàn)插件的實(shí)現(xiàn) .1 插件實(shí)現(xiàn)的功能插件實(shí)現(xiàn)的功能 .2 具體功能實(shí)現(xiàn)具體功能實(shí)現(xiàn) 設(shè)計(jì)器設(shè)計(jì)器 圖 7 設(shè)計(jì)器 窗體的實(shí)現(xiàn)窗體的實(shí)現(xiàn) 圖 8 窗體 設(shè)置字體按鈕: 圖 9 設(shè)置字體按鈕 選擇字體 Private Sub cmdSetFont_Click() 選擇一個(gè)臨時(shí)單元 Dim rng As Range Set rng = mExcelApp.Selection 保存其原有字體設(shè)置 Dim size, italic, underline, str

38、ikethrough, bold, color, style, name size = rng.Font.size italic = rng.Font.italic underline = rng.Font.underline strikethrough = rng.Font.strikethrough bold = rng.Font.bold color = rng.Font.color style = rng.Font.FontStyle name = rng.F 使用 Excel 的標(biāo)準(zhǔn)對(duì)話框設(shè)置其字體 mExcelApp.Dialogs(xlDialogFontProp

39、erties).Show 保存其字體設(shè)置 mFontsize = rng.Font.size mFontitalic = rng.Font.italic mFontunderline = rng.Font.underline mFontstrikethrough = rng.Font.strikethrough mFontBold = rng.Font.bold mFontColor = rng.Font.color mFontStyle = rng.Font.FontStyle mFontName = rng.F 恢復(fù)其原有字體設(shè)置 rng.Font.size = size

40、rng.Font.italic = italic rng.Font.underline = underline rng.Font.strikethrough = strikethrough rng.Font.bold = bold rng.Font.color = color rng.Font.FontStyle = style rng.F = name End Sub 單元填充按鈕: 圖 10 單元填充按鈕 Private Sub cmdBackGround_Click() 選擇一個(gè)臨時(shí)單元 Dim rng As Range Set rng = mExcelApp.Selec

41、tion 保留原有設(shè)置 Dim clrIndex, pClrIndex, p, pClr p = rng.Interior.Pattern clrIndex = rng.Interior.ColorIndex pClr = rng.Interior.PatternColor pClrIndex = rng.Interior.PatternColorIndex 設(shè)置新的填充模式 mExcelApp.Dialogs(xlDialogPatterns).Show 保存設(shè)置 mPattern = rng.Interior.Pattern mColorIndex = rng.Interior.Color

42、Index mPatternColor = rng.Interior.PatternColor mPatternColorIndex = rng.Interior.PatternColorIndex 恢復(fù)臨時(shí)單元以前設(shè)置 rng.Interior.Pattern = p rng.Interior.ColorIndex = clrIndex rng.Interior.PatternColor = pClr rng.Interior.PatternColorIndex = pClrIndex End Sub 保存單元格式設(shè)置的變量 Private Sub cmdCancel_Click() Unl

43、oad Me End Sub Private Sub cmdFormat_Click() FormatSelectedCells Trim(txtFormula) MsgBox 格式化完成! Unload Me End Sub 類模塊設(shè)計(jì):類模塊設(shè)計(jì): (類模塊設(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.

44、根據(jù)提供的當(dāng)前行列號(hào), 得到當(dāng)前的公式字符串. Option Explicit 公式的原始位置 Private mAbsRow As Long Private 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 mSeg

45、ments = New Collection mAbsRow = absRow mAbsCol = absCol 解析公式(查找其中的相對(duì)單元位置: 以開頭的單元) 主要是從上面的 公式字符串里提取我們需要的 相對(duì)位置的信息 Dim i As Integer, sChar As String, sSeg As String Dim blnInBrace As Boolean 標(biāo)志: 當(dāng)前字符位置是否在引號(hào)中 Dim blnGettingRelativeCell As Boolean 標(biāo)志: 正在提取相對(duì)單元位置 Dim seg As CSegment For i = 1 To Len(sFor

46、mula) sChar = Mid(sFormula, i, 1) Select Case sChar Case , 如果是引號(hào) blnInBrace = Not blnInBrace 是否在引號(hào)內(nèi)標(biāo)志取反 Case 可能是相對(duì)單元位置 If Not blnInBrace Then 不在引號(hào)嵌套中, 則確定是一個(gè)相對(duì)位置 保存前面的段 If sSeg Then AddSegment sSeg, blnGettingRelativeCell End If sSeg = blnGettingRelativeCell = True sChar = End If End Select If blnGe

47、ttingRelativeCell And sChar Then If Not IsPositionChar(sChar) Then 如果遇到非位置字符,說明相對(duì)位置的字符串已經(jīng)結(jié)束 AddSegment sSeg, True 清空 sSeg,為保存下一個(gè)段作準(zhǔn)備 sSeg = blnGettingRelativeCell = False End If End If sSeg = sSeg & sChar 將當(dāng)前字符保存到 sSeg 中 Next 保存最后一個(gè)段(如果有的話) If sSeg Then AddSegment sSeg, blnGettingRelativeCell End If

48、 End Sub 以上主要功能實(shí)現(xiàn)是:公式類字符串中的信息有很多類型、范圍 需要從公 式字符串里提取我們需要的相對(duì)位置信息。為相對(duì)位置的開始設(shè)置一個(gè)標(biāo)記 并找到和判斷相對(duì)位置信息進(jìn)行保存。 判斷一個(gè)字符是否是表示單元位置的字符(字母或數(shù)字) Private Function IsPositionChar(sChar As String) As Boolean Dim sTmp As String sTmp = UCase(sChar) If sTmp = A And sTmp = 0 And sTmp =4 表示將 A1 到 D1 單元的數(shù)據(jù)相加,判斷其和是否大于等于 4。 我選擇的單元可能是

49、從 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 nRow As Long, ByVal nCol As Long) As String If mSegments.Count = 0 Then Exit FunctionDim seg As CSegment, sFormula As String For Each seg In mSegments sFormula

50、= sFormula & seg.GetSegmentString(nRow - mAbsRow, nCol - mAbsCol) Next GetFormula = sFormula End Function 結(jié)結(jié) 論論 我們根據(jù) COM 組件和 Office 插件編程原理開發(fā)了本軟件,其中實(shí)現(xiàn)了對(duì)條 件格式判斷的功能。軟件雖小,但基本上能夠滿足輸入格式判斷的功能。用戶 需要的條件各種各樣,有的是單個(gè)單元內(nèi)的數(shù)值比較、有的是多個(gè)單元內(nèi)的綜 合比較,比較方式可以用公式表示。但輸入界面中只能輸入指定的字符串。如 何根據(jù)字符串進(jìn)行單元內(nèi)容的計(jì)算這是這個(gè)軟件實(shí)現(xiàn)的難點(diǎn)。經(jīng)指導(dǎo)老師王老 師的幫助和講解后

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論