在VB应用程序中调用Excel2000
Visual Basic簡稱(VB)是設計Windows應用程序強有力的開發工具,“全球絕大多數Windows應用程序都是用VB開發的”; Excel是目前使用最廣泛的辦公應用軟件之一,它具有強大的數學分析與計算功能,包括很多VB沒有的求值數學表達式的函數和方法。由于Excel的應用程序對象是外部可創建的對象,所以能從VB應用程序內部來程序化操縱Excel。本文結合自己的實踐和體會,談談如何在VB6.0應用程序中調用Exce12000,供大家參考。
一、Excel對象模型
為了在VB應用程序中調用Excel,必須要了解Excel對象模型。Excel對象模型描述了Excel的理論結構,所提供的對象很多,其中最重要的對象,即涉及VB調用Excel最可能用到的對象有:
二、調用Excel
在VB應用程序中調用Excel,實質是將Excel作為一個外部對象來引用,由Excel對象模型提供能從VB應用程序內部來程序化操縱的對象以及相關的屬性、方法和事件。
1、在VB工程中添加對Excel類型庫的引用
為了能從VB應用程序中訪問Excel豐富的內部資源,使Excel應用程序運行得更快,需要在VB工程中添加對Excel類型庫的引用。具體步驟如下:
a)從VB5“工程”菜單中選擇“引用”;
b) 在“引用”對話框中選擇Excel類型庫:"Microsoft Excel9.0 Object Library";
c)單擊左邊小方框,使之出現“√”符號;
d)按“確定”退出。
注:要想在VB應用程序中調用Excel,你的計算機系統中必須安裝Excel。
2、引用Application對象
Application對象是Excel對象模型的頂層,表示整個Excel應用程序。在VB應用程序中調用Excel,就是使用Application對象的屬性、方法和事件。為此,首先要聲明對象變量:
?
| Dim VBExcel As Object |
?
或直接聲明為Excel對象:
?
| Dim VBExcel As Excel.Application |
?
在聲明對象變量之后,可用CreateObject函數或GetObject函數給變量賦值新的或已存在的Application對象引用。
a)用CreateObject函數生成新的對象引用:
?
| Set VBExcel=CreateObject ("Excel.Application") |
?
字符串“Excel.Application”是提供Excel應用程序的編程ID,這個變量引用Excel應用程序本身。
b)用GetO場ect函數打開已存在的對象引用:
?
| Set AppExcel=GetObject("SAMP.XLS") |
?
上面語句打開文件SAMP.XLS。
3、Application對象常用的屬性、方法
?
| 屬性、方法 | 方法 |
| Visible屬性 | 取True或False,表明Excel應用程序是否可見。 |
| Left,Top屬性 | Excel窗口的位置; |
| Height, Width屬性 | Excel窗口的大小; |
| WindowState屬性 | 指定窗口的狀態,取:XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)。 |
| Quit方法 | 退出Microsoft Excel; |
| Calculate方法 | 重新計算所有打開的工作簿、工作表或單元格。 |
| Evaluate方法 | 求值數學表達式并返回結果。 |
?
示例1:求值數學表達式:
?
| Dim VBExcel As Object Set VBExcel=CreateObject ("Excel.Application") X=VBExcel. Evaluate ("3+5*(cos (1/log (99. 9)))") |
?
三、使用Excel應用程序如前所述,在VB應用程序中調用Excel應用程序,就是使用Application對象的屬性、方法和事件。下面分類給出其中常用的屬性和方法。
1、使用工作薄
Workbook對象代表Excel應用程序中當前打開的一個工作簿,包含在Workbooks集合中。可以通過Workbooks集合或表示當前活動工作簿的Active Workbook對象訪問Workbook對象。
常用的方法有:
| 屬性、方法 | 意義 |
| Add方法 | 創建新的空白工作簿,并將其添加到集合中。 |
| Open方法 | 打開工作簿。 |
| Activate方法 | 激活工作簿,使指定工作簿變為活動工作簿,以便作為Active Workbook對象使用。 |
| Save方法 | 按當前路徑和名稱保存現有工作簿(如是首次保存,則將其保存到缺省名稱中,如BOOK1.XLS)。 |
| SaveAs方法 | 首次保存工作簿或用另一名稱保存工作簿。 |
| Close方法 | 關閉工作簿。 |
| PrintOut方法 | 打印工作簿,語法為: PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate) 可選參數: From:打印的起始頁號。如省略將從起始位置開始打印。 To:打印的終止頁號。如省略將打印至最后一頁。 Copies:要打印的份數。如省略將只打印一份。 Preview:如果為True則Excel打印指定對象之前進行打印預覽。如果為False,或省略則立即打印該對象。 Printer:設置活動打印機的名稱。 ToFile:如果為True則打印輸出到文件。 Collate:如果為True則逐份打印每份副本。 |
下面語句將活動工作簿的2到5頁打印3份:
| ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3 |
示例2:生成、保存、關閉工作簿
| Dim VBExcel As Excel.Application Set VBExcel== CreateObject("Excel.Application") With VBExcel .Workbooks.Add With ActiveWorkbook .Save As"C: \Temp \OUTPUT.XLS" .Close End With .Quit End With |
2、使用工作表
Sheets集合表示工作簿中所有的工作表。可以通過Sheets集合來訪問、激活、增加、更名和刪除工作表。一個Worksheet對象代表一個工作表。
常用的屬性、方法有:
| 屬性、方法 | 意義 |
| Worksheets屬性 | 返回Sheets集合。 |
| Name屬性 | 工作表更名。 |
| Add方法 | 創建新工作表并將其添加到工作簿中。 |
| Select方法 | 選擇工作表。 |
| Copy方法 | 復制工作表。 |
| Move方法 | 將指定工作表移到工作簿的另一位置。 |
| Delete方法 | 刪除指定工作表。 |
| PrintOut方法 | 打印工作表。 |
示例3:將C盤工作簿中的工作表復制到A盤工作簿中:
| Dim VBExcel As Excel.Application Set VBExcel=CreateObject("Excel.Application") With VBExcel .Workbooks.Open "C:\Temp\OUTPUT.XLS" .Workbooks.Open"A:\OUTPUT1.XLS" .Workbooks("OUTPUT.XLS").Sheets ("Sales").Copy .Workbooks("OUTPUT1.XLS) .Workbooks("OUTPUT1.XLS").Save .Workbooks("OUTPUT.XLS").Close .Workbooks("OUTPUTI.XLS").Close .Quit End With |
3、使用單元范圍
Range對象代表工作表的某一單元格、某一行、某一列、某一選定區域或者某一三維區域。
常用的屬性、方法有:
| 屬性、方法 | 意義 |
| Range屬性 | Range (arg)其中arg為A1--樣式符號,表示單個單元格或單元格區域。 |
| Cells屬性 | Cells (row, col )(其中row為行號,col為列號)表示單個單元格。 |
| ColumnWidth屬性 | 指定區域中所有列的列寬。 |
| Rowl3eight屬性 | 指定區域中所有行的行寬。 |
| Value屬性 | 指定區域中所有單元格的值(缺省屬性)。 |
| Formula屬性 | 指定單元格的公式,由A1--樣式引用。 |
| Select方法 | 選擇范圍。 |
| Copy方法 | 將范圍的內容復制到剪貼板。 |
| C1earContents方法 | 清除范圍的內容。 |
| Delete方法 | 刪除指定單元范圍。 |
4、使用圖表
Chart對象代表工作簿中的圖表。該圖表既可為嵌人式圖表(包含于ChartObject對象中)也可為分立的圖表工作表。
常用方法有:
| 方法 | 意義 |
| Add方法 | 新建圖表工作表。返回Chart對象。 |
| PrineOut方法 | 打印圖表。 |
| ChartWizard方法 | 修改給定圖表的屬性,其語法為: ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels, SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle) 其中: Source:包含新圖表的源數據的區域。如省略,將修改活動圖表工作表或活動工作表中處于選定狀態的嵌人式圖表。 Gallery:圖表類型。其值可為下列常量之一:xlArea, x1Bar, xlColumn, xlLine, x1Pie, xlRadar,x1XYScatter, xlCombination, x13DArea, x13DBar、x13DColumn, x13DLine, x13DPie、x13 DSurface、xlDoughnut或xlDefaultAutoFormat。 Format:內置自動套用格式的編號。如省略,將選擇默認值。 P1otBy:指定系列中的數據是來自行(xlRows)還是列(xlColumns)。 CategoryLabels:表示包含分類標志的源區域內行數或列數的整數。 SeriesLabels:表示包含系列標志的源區域內行數或列數的整數。 HasLegend:若指定True,則圖表將具有圖例。 Title:圖表標題文字。 CategoryTitle:分類軸標題文字。 ValueTitle:數值軸標題文字。 ExtraTitle:三維圖表的系列軸標題,或二維圖表的第二數值軸標題。 |
可組合使用Add方法和ChartWizard方法,以創建包含工作表中數據的圖表工作表。下例基于工作表“Sheetl”中單元格區域“A1:A20”中的數據生成新的折線圖并打印。
| With Charts.Add .ChartWizard source:=Worksheets ("sheet1").Range ("a1:a20"),gallery:=xlLine, title:=“折線圖表” .Printout End With |
5、使用Excel工作表函數
在VB語句中可使用大部分的Excel工作表函數,可通過WorksheetFunction對象調用Excel工作表函數。下面的Sub過程用Min工作表函數求出指定區域中單元格的最小值,并通過消息框顯示結果值。
| Sub UseFunction() Dim myRange As Range Set myRange=Worksheets ("Sheet1").Range("B2:F10") answer=Application.WorksheetFunction.Min(myRange) MsgBox answer End Sub |
如果使用以區域引用為參數的工作表函數,必須指定一個Range對象。如可用Match工作表函數對A1:A10區域的所有單元格進行搜索。
| Sub FindFirst() my Var=Application.WorksheetFunction.Match (9, Worksheets( 1).Range("A1:A10"),0) MsgBox myVar End Sub |
要在單元格中插人工作表函數,可將該函數指定為對應于Range對象的Formula屬性值。在以下示例中,將當前工作簿Sheetl內A1:B3區域的Formula屬性指定為RAND工作表函數(此函數產生二個隨機數)。
| Sub InsertFormula() Worksheets ("Sheet1" ).Range("A1:B3").Formula="RAND()" End Sub |
以上簡要介紹了Excel對象模型中部分對象及其屬性和方法,更詳細的信息可參閱Excel 2000幫助中的“Microsoft Excel Visual Basic參考”一節的內容。實際上,Microsoft Office家族的Word,PowerPoint, Access和Project等應用程序都可以在VB應用程序中調用,其原理和步驟完全相同,只是其對象模型有所不同而已。
轉載于:https://www.cnblogs.com/Nina-piaoye/archive/2008/12/26/1363064.html
總結
以上是生活随笔為你收集整理的在VB应用程序中调用Excel2000的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt通过ODBC读取excel文件
- 下一篇: native的Socket向Androi