摘要:介紹了在Windows環(huán)境下利用Visual Basic6采集實時數(shù)據(jù),并送至Excel進行數(shù)據(jù)計算和制圖處理。
關(guān)鍵詞:報表;工作??;工作表;單元格
中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2008)16-21347-02
The Visual Basic's Application Combined with Excel
YANG Ye
(Wuxi Professional College of Science and Technology,Wuxi 214028,China)
Abstract:In this paper, the real-time data acquisition program, which is developed by Visual Basic 6 under Windows98, is presented. The sampled data can be calculated or be made a chart in the Excel software.
Key words:Report Table;WorkBook;WorkSheet;Cell
1 引言
在Visual Basic中制作報表,通常是用數(shù)據(jù)環(huán)境設(shè)計器(Data Environment Designer)與數(shù)據(jù)報表設(shè)計器(Data Report Designer),或者使用ActiveX控件輸出。但對于大多數(shù)習慣于Excel報表的用戶而言,用以上兩種方法生成的報表在格式和功能等方面往往不能滿足他們的要求。而且有些用戶已經(jīng)有Excel表格,在數(shù)據(jù)采集系統(tǒng)中希望將采集到的數(shù)據(jù)結(jié)果直接存入相應(yīng)的Excel表中,利用Excel來完成計算、統(tǒng)計和圖表顯示等功能。同時用戶可能希望從已有的Excel表格中讀取數(shù)據(jù)。Excel是一個優(yōu)秀的數(shù)據(jù)表格軟件,由于Visual Basic的可擴展性,使用Visual Basic來操作Excel是相當方便的。Excel可以用作OLE服務(wù)器,向外部輸出某些屬性、方法和事件。Visual Basic可以利用這些功能,實現(xiàn)與Excel的集成。
2 軟件的設(shè)計
微軟的Excel對象模型包括了128個不同的對象,從矩形,文本框等簡單的對象到透視表,圖表等復(fù)雜的對象。Application對象處于Excel對象層次結(jié)構(gòu)的頂層,表示Excel自身的運行環(huán)境。Workbook對象直接地處于Application對象的下層,表示一個Excel工作薄文件。Worksheet對象包含于Workbook對象,表示一個Excel工作表。Range對象包含于Worksheet對象,表示Excel工作表中的一個或多個單元格。
這個例子是數(shù)據(jù)采集系統(tǒng)通過串口得到生產(chǎn)數(shù)據(jù),根據(jù)生產(chǎn)數(shù)據(jù)把相應(yīng)的結(jié)果數(shù)據(jù)存入Excel表格中,在表格中的數(shù)據(jù)存滿后,自動備份并清空表格,準備給下一次采集的數(shù)據(jù)使用。
在創(chuàng)建標準EXE工程文件時,必須引用Microsoft Office 8.0 Object Library。
定義對象變量:
Dim MyExcel As Object
Dim MyBook As New Excel.Workbook
Dim MyRange As Range
用 Open 方法打開一個工作簿時,該工作簿將成為 Workbooks 集合的成員。
Set MyExcel = GetObject(, \"Excel.Application\")
Set MyBook = MyExcel.Workbooks.Open(App.Path \"\\SPC.xls\")
Excel應(yīng)用軟件和Visual Basic的數(shù)據(jù)采集軟件同時運行,可以將Excel不以全屏顯示模式進行顯示,這樣在打開Excel軟件時,不會覆蓋數(shù)據(jù)采集軟件的界面。
MyExcel.Application.DisplayFullScreen = False
編號是賦予工作表的連續(xù)數(shù)字,這些數(shù)字的順序,是根據(jù)同一類型的工作表的標簽位置按由左而右的順序確定的。
Set myRange = MyBook.Worksheets(1).Range(\"C9:F9\")
可在 Range 方法中以 A1 樣式的記號引用單元格和單元格區(qū)域。
MyBook.Worksheets(1).Range(\"C10:F10\").Value = 0
可用 Rows 屬性或 Columns 屬性處理整行或整列。
MyBook. Worksheets(1).Rows(1).Font.Bold = True
因為可用變量代入單元格索引值,所以 Cells 屬性非常適于在單元格區(qū)域中循環(huán)。
For iCounter = 1 To 20
MyBook.Worksheets(1).Cells(6, iCounter).Value = counter
Next iCounter
將數(shù)據(jù)存入表格中。MyBook1.Sheets(1).Cells(6, 6) = 100
可以規(guī)定單元格數(shù)據(jù)的顯示格式。
MyBook1.Worksheets(2).Range(\"b9\").NumberFormat = \"0.00\"
如果某個數(shù)據(jù)超出了控制范圍,可以將某單元格的內(nèi)部設(shè)置為紅色,以給出報警信息。
MyBook1.Worksheets(1).Range(\"b9\").Interior.ColorIndex = 3
或者將顯示的字體以某種特殊的顏色顯示。
MyBook1.Sheets(1).Range(\"B9\").Font.Color = RGB(0, 23, 23)
要在單元格中插入工作表函數(shù),可將該函數(shù)指定為對應(yīng)于 Range 對象的 Formula屬性值。
MyBook1.Worsheets(1).Range(\"C7:F7\").Formula = \"=RAND()\"
某些場合需要從Excel表格中讀取數(shù)據(jù),如控制范圍等。
DynTorUp = SpcBook1.Worksheets(1).Cells(7, 36).Value
將 A1 單元格的最后一個字符設(shè)為上標字符。
n = MyBook1.Worksheets(1).Range(\"A1\").Characters.count
MyBook1.Worksheets(1).Range(\"A1\").Characters(n, 1) .Font.Superscript = True
Excel工作表可以設(shè)置密碼保護,以防止數(shù)據(jù)被人為破壞。
SpcBook1.Worksheets(1).Protect Password:=\"421842\", Contents:=True
如果Excel表格中的數(shù)據(jù)已經(jīng)填滿,可以將該表格文件備份為另一Excel表格文件,并清除原先表格中的數(shù)據(jù)。
SpcBook1.SaveCopyAs (App.Path SaveFileName)
Set myRange = SpcBook1.Worksheets(1).Range(\"b66:z72\")
myRange.ClearContents
關(guān)閉Excel軟件。MyExcel.Quit。
3 結(jié)束語
以上Visual Basic與Excel的結(jié)合應(yīng)用實例在Visual Basic6.0軟件中調(diào)試通過并已在實際數(shù)據(jù)采集系統(tǒng)中應(yīng)用。Excel是功能強大的數(shù)據(jù)表格處理軟件,用Visual Basic將采集的數(shù)據(jù)存入Excel報表可以利用Excel本身的數(shù)據(jù)處理、制圖和打印等功能,這樣大大減少了程序員的工作量。
(以上程序在Windows98、Windows2000、WindowsXP上都調(diào)試通過。)
參考文獻:
[1] 漢森.EXCEL2003與VBA編程從入門到精通(中文版)[M].李兆斌,譯.北京:電子工業(yè)出版社,2004.
[2] 趙建民,朱信忠.基于Agent的Visual Basic人性化軟件編程技術(shù)[J].計算機工程與應(yīng)用,2003(6):116-119.
[3] 高春艷,劉彬彬,王斌.Visual Basic開發(fā)技術(shù)大全[M].北京:人民郵出版社,2007.
[4] 石曉珍.基于組件技術(shù)的通用考試系統(tǒng)的設(shè)計[J].計算機與現(xiàn)代化,2007,138(2):43-45.
[5] JOHN WALKENBACH.EXCEL 2003高級VBA編程寶典[M].蓋江南,王勇,譯.北京:電子工業(yè)出版社,2005.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。