![Visual-Basic調(diào)用電子表格之技巧_第1頁(yè)](http://file4.renrendoc.com/view10/M00/13/30/wKhkGWXf1Y6ACe8bAAMb1bzQ6YA608.jpg)
![Visual-Basic調(diào)用電子表格之技巧_第2頁(yè)](http://file4.renrendoc.com/view10/M00/13/30/wKhkGWXf1Y6ACe8bAAMb1bzQ6YA6082.jpg)
![Visual-Basic調(diào)用電子表格之技巧_第3頁(yè)](http://file4.renrendoc.com/view10/M00/13/30/wKhkGWXf1Y6ACe8bAAMb1bzQ6YA6083.jpg)
![Visual-Basic調(diào)用電子表格之技巧_第4頁(yè)](http://file4.renrendoc.com/view10/M00/13/30/wKhkGWXf1Y6ACe8bAAMb1bzQ6YA6084.jpg)
![Visual-Basic調(diào)用電子表格之技巧_第5頁(yè)](http://file4.renrendoc.com/view10/M00/13/30/wKhkGWXf1Y6ACe8bAAMb1bzQ6YA6085.jpg)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
]VisualBasic調(diào)用Excel之技巧VisualBasic(以下簡(jiǎn)稱VB)是一套可視化、面向?qū)ο?、事件?qū)動(dòng)方式的結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,已經(jīng)成為許多程序設(shè)計(jì)者甚至專業(yè)程序員用來開發(fā)WINDOWS應(yīng)用程序的首選開發(fā)工具。但用過VB的程序設(shè)計(jì)人員都知道,要想用VB輸出復(fù)雜的表格來,是十分困難的。能不能用VB調(diào)用EXCEL呢?Active技術(shù)標(biāo)準(zhǔn)為我們解決了這個(gè)問題。最近筆者為單位開發(fā)“土工試驗(yàn)數(shù)據(jù)整理”的某個(gè)模塊時(shí),涉及到復(fù)雜數(shù)據(jù)表格的輸出問題,經(jīng)過筆者的摸索,用VB調(diào)用EXCEL,取得了很好的效果。本文從編程實(shí)踐的角度對(duì)使用VB控制EXCEL的技術(shù)作簡(jiǎn)要說明。1EXCEL的對(duì)象模型如果一個(gè)應(yīng)用程序支持自動(dòng)化技術(shù),那么其它的應(yīng)用就可以通過其暴露的對(duì)象,對(duì)它進(jìn)行控制,控制程序稱為客戶機(jī),而被控制的一方就稱為服務(wù)器,被控制的對(duì)象就是Active對(duì)象。VB正是通過EXCEL顯露的各級(jí)對(duì)象來控制EXCEL工作的。每個(gè)對(duì)象都有各自的方法和屬性,通過方法可以實(shí)現(xiàn)對(duì)對(duì)象的控制,而屬性則可以改變對(duì)象的各種狀態(tài)。理解EXCEL的對(duì)象模型是對(duì)其編程的基礎(chǔ)。EXCEL是以層次結(jié)構(gòu)組織對(duì)象的,其對(duì)象模型中含有許多不同的對(duì)象元素,這些對(duì)象元素就是VB可以操縱的。在EXCEL對(duì)象的層次結(jié)構(gòu)中,最頂層是Application對(duì)象,是Excel本身。從該對(duì)象開始往下依次是:.workbooks對(duì)象集,是Application對(duì)象的下層,其指的是Excel的工作簿文件。.worksheets對(duì)象集,是Workbooks對(duì)象集的下層,它表示的是Excel的一個(gè)工作表。.Cells和Range對(duì)象,它們是worksheets對(duì)象的下層,它則指向Excel工作表中的一個(gè)或多個(gè)單元格。以上介紹的四個(gè)對(duì)象是Excel中最重要也是用得最多的對(duì)象,而且從上面的介紹中也不難看出,要控制Excel中的某個(gè)具體對(duì)象,如某個(gè)工作簿中某一表格中的單元格,就必須從Excel層次結(jié)構(gòu)對(duì)象的最上層即Application對(duì)象開始遍歷。2Excel對(duì)象的使用2.1application對(duì)象的使用如前所述,Application對(duì)象位于Excel層次結(jié)構(gòu)對(duì)象的最上層,它代表的是Excel自身,我們的應(yīng)用程序理應(yīng)從Application對(duì)象的建立開始。VB控制Excel的啟動(dòng)方式有幾種,在這里我們使用了API調(diào)用,可以確保目前系統(tǒng)中只有一個(gè)Excel副本在運(yùn)行,程序代碼和說明如下:OptionExplicit
PublicxlappAsObject‘Excel對(duì)象
PublicxlbookAsObject‘工作簿
PublicxlsheetAsObject‘工作表
DeclareFunctionFindWindowLib"user32"Alias_
"FindWindowA"(ByVallpClassNameAsString,_
ByVallpWindowNameAsLong)AsLong
DeclareFunctionSendMessageLib"user32"Alias"SendMessageA"_
(ByValhwndAslong,ByValwMsgAsLong,ByValwParamAsLong,lParam_
AsAny)As_Long以上是公有變量和API函數(shù)應(yīng)在模塊中聲明。SubGetExcel()
DimMyXLAsObject'用于存放MicrosoftExcel引用的變量。
DimExcelWasNotRunningAsBoolean'用于最后釋放的標(biāo)記。
OnErrorResumeNext'延遲錯(cuò)誤捕獲。
'不帶第一個(gè)參數(shù)調(diào)用Getobject函數(shù)將返回對(duì)該應(yīng)用程序的實(shí)例的引用。
'如果該應(yīng)用程序不在運(yùn)行,則會(huì)產(chǎn)生錯(cuò)誤。
SetMyXL=GetObject(,"Excel.Application")
IfErr.Number<>0ThenExcelWasNotRunning=True
Err.Clear'如果發(fā)生錯(cuò)誤則要清除Err對(duì)象。
'檢測(cè)MicrosoftExcel。如果MicrosoftExcel在運(yùn)行,則將其加入運(yùn)行對(duì)象表。
DetectExcel'該過程檢測(cè)并登記正在運(yùn)行的Excel
'設(shè)置其Application屬性,顯示MicrosoftExcel。
'然后使用MyXL對(duì)象引用的Windows集合,顯示包含該文件的實(shí)際窗口。
MyXL.Application.Visible=True
MyXL.Parent.Windows(1).Visible=True
'如果在啟動(dòng)時(shí),MicrosoftExcel的這份副本不在運(yùn)行中,
'則使用Application屬性的Quit方法來關(guān)閉它。
'注意,當(dāng)試圖退出MicrosoftExcel時(shí),
'標(biāo)題欄會(huì)閃爍,并顯示一條消息詢問是否保存所加載的文件。
IfExcelWasNotRunning=TrueThen
MyXL.Application.Quit
EndIf
SetMyXL=Nothing'釋放對(duì)該應(yīng)用程序和電子數(shù)據(jù)表的引用。
EndSub'該過程檢測(cè)并登記正在運(yùn)行的Excel。
SubDetectExcel()
ConstWM_USER=1024
DimhwndAsLong
'如果Excel在運(yùn)行,則該API調(diào)用將返回其句柄。
hwnd=FindWindow("XLMAIN",0)
Ifhwnd=0Then'0表示沒有Excel在運(yùn)行。
ExitSub
Else
'Excel在運(yùn)行,因此可以使用SendMessageAPI'函數(shù)將其放入運(yùn)行對(duì)象表。
SendMessagehwnd,WM_USER+18,0,0
EndIf
EndSub有了Application對(duì)象,就可以非常方便地訪問Excel應(yīng)用程序中的其它對(duì)象,以及這此對(duì)象的屬性和方法。2.2workbooks對(duì)象的使用dimxlbookasobject‘定義一個(gè)指向工作簿變量
setxlbook=xlapp.application.workbooks.add使用ADD方法新建一個(gè)空白的工作簿。2.3worksheets對(duì)象的使用dimxlsheetasobject‘定義一個(gè)指向工作表的變量
setxlsheet=xlapp.application.workshets.add
或者:setxlsheet=xlapp.application.worksheet(1)‘指向當(dāng)前工作簿的第一頁(yè)2.4Cells和Range對(duì)象的應(yīng)用引用一個(gè)工作表(xlsheet)中的某個(gè)單位格用以下代碼:xlsheet.cells(I,j)=100‘表示在第I行第J列中寫入100這個(gè)數(shù)。引用工作表中的多個(gè)單位格用以下代碼:Withxlsheet'設(shè)置邊框?yàn)槭菍?shí)際上線
.Range(.Cells(7,1),.Cells(28,29)).Borders.LineStyle=xlContinuous
EndWith3應(yīng)用實(shí)例該實(shí)例給出怎樣運(yùn)行Excel創(chuàng)建復(fù)雜表格以及向表格填充數(shù)據(jù)的完整過程。在開始應(yīng)用程序前,我們要做的準(zhǔn)備工作是建立一個(gè)我們所需格式的Excel模板。模板的作用相信大家都不會(huì)陌生。我所做的模板如下(模板文件取名為“土工試驗(yàn)成果表”):模板可以存在指定的文件夾里,也可以在于Excel存放模板的文件夾里。打開VB編程環(huán)境,選擇新建一標(biāo)準(zhǔn)工程。要想在VB中很好地調(diào)用Excel,首先必須打開VB編程環(huán)境“工程”菜單中的“引用”項(xiàng)目,并選取項(xiàng)目中的“MicrosoftExcel8.0objectlibrary項(xiàng)。然后在窗體中加入一命令按鈕,其caption屬性為:Excel輸出。即command1.caption=Excel輸出。以下是代碼,其中模塊中的代碼和上面介紹的application使用代碼是一樣的,不再列出。PrivateSubCommand1_Click()
Dimi,jAsInteger
CallGetExcel
Setxlapp=GetObject("土工試驗(yàn)成果表.XLS")'打開模扳文件
xlapp.Parent.Windows(1).Visible=True'使父窗體可見
Setxlsheet=xlapp.Application.Worksheets(1)'當(dāng)前工作簿的第一頁(yè)
Fori=7To28‘這段代碼是將整數(shù)1到29寫入單位格中,實(shí)際應(yīng)用時(shí)可
Forj=1To29 ‘讀一數(shù)據(jù)文件并按要求寫入表格中
xlsheet.Cells(i,j)=j'當(dāng)前工作簿第一頁(yè)的第I行第J列
Nextj
Nexti
Withxlsheet'設(shè)置邊框?yàn)槭菍?shí)線
.Range(.Cells(7,1),.Cells(28,29)).Borders.LineStyle=xlContinuous
EndWith
xlsheet.SaveAs"d:\temp\w2.xls"‘按指定文件名存盤
'引用當(dāng)前工作簿的第二頁(yè)
Setxlsheet=xlapp.Application.Worksheets(2)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 體育用品企業(yè)品牌塑造與推廣考核試卷
- 二零二五年度水泥路面施工環(huán)保監(jiān)測(cè)與治理合同
- 2025-2030年可發(fā)光顏料行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年塑木戶外照明支架行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年城市通勤智能自行車鎖行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年口腔護(hù)理漱口水便攜裝行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 2025-2030年手工藝教材店企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 2025-2030年拳擊耐力訓(xùn)練器行業(yè)跨境出海戰(zhàn)略研究報(bào)告
- 2025-2030年散狀物料自動(dòng)稱重與配料企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 咖啡館音樂搭配考核試卷
- 建筑公司工程財(cái)務(wù)報(bào)銷制度(精選7篇)
- 降水預(yù)報(bào)思路和方法
- 工程設(shè)計(jì)方案定案表
- 第一章-天氣圖基本分析方法課件
- 虛位移原理PPT
- 初二物理彈力知識(shí)要點(diǎn)及練習(xí)
- QE工程師簡(jiǎn)歷
- 輔音和輔音字母組合發(fā)音規(guī)則
- 2021年酒店餐飲傳菜員崗位職責(zé)與獎(jiǎng)罰制度
- 最新船廠機(jī)艙綜合布置及生產(chǎn)設(shè)計(jì)指南
- 可降解塑料制品項(xiàng)目可行性研究報(bào)告-完整可修改版
評(píng)論
0/150
提交評(píng)論