如何從 Visual Basic . NET Microsoft Excel 自動化| 文章編號 | : | 301982 | | 上次校閱 | : | 2007年3月29日 | | 版次 | : | 8.2 |
結論 這份文件示範如何透過使用 Microsoft Visual Basic . NET 來建立 Automation 用戶端為 Microsoft Excel。
回此頁最上方
其他相關資訊 自動化是處理程序, 允許在語言 (如 Visual Basic, 以程式設計方式控制其他應用程式撰寫的應用程式。 自動化至 Excel 讓您可以執行一些動作, 例如建立新的活頁簿、 將資料加入至活頁簿, 或建立圖表。 與 Excel 和其他 Microsoft Office 應用程式, 幾乎所有的動作, 您可以藉由使用者介面執行以手動方式也藉由使用自動化可執行程式設計方式。
Excel 透過物件模型展現程式設計功能。 物件模型是一組類別和方法, 可做為副本到邏輯元件的 Excel。 舉例來說, 有 應用程式 物件、 Workbook 物件, 而, Worksheet 物件的每個包含的這些元件的 Excel 功能。 能夠從 Visual Basic . NET, 存取物件模型您可以將專案參考設定至型別程式庫。
這份文件示範如何為 Visual Basic . NET 設定適當的專案參照至 Excel 型別程式庫並提供範例程式碼來自動化 Excel。
建立在 Microsoft Excel 的 Automation 用戶端| 1. | 啟動 Microsoft Visual Studio .NET。. | | 2. | 在 [ 檔案 ] 功能表, 再按一下 [ New , 及 專案 。 從 Visual Basic 專案類型選取 [ Windows 應用程式 。 根據預設會建立 Form1。.
| | 3. | 將參考加入至 Microsoft Excel Object Library 。 如果要執行這項操作,請依照下列步驟執行。:
| a. | 在 [ 專案 ] 功能表, 按一下 [ 加入參考 。
| | b. | 在 [ COM ] 索引標籤, 找出 Microsoft Excel Object Library , 並按一下 選取 。
請注意 Microsoft Office 2003 包括 Primary Interop Assemblies (PIA)。 並未包含 Microsoft Office XP PIA, 但是他們可以下載。 如需有關 Office XP PIA 的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件::
328912 (http://support.microsoft.com/kb/328912/)
Microsoft Office XP 主要 Interop 組件 (PIA) 可供下載
| | c. | 按一下 [ 確定 ] 以接受您的選項在 [ 加入參考 ] 對話方塊。
|
| | 4. | 在 [ 檢視 ] 功能表, 選取 工具箱 ] 以顯示 [ 工具箱 ], 然後新增按鈕至 Form 1。
| | 5. | 連按兩下 Button 1 。 即會出現在表單的程式碼視窗。
| | 6. | 在程式碼視窗中,找出下列程式碼:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
End Sub
以下列程式碼取代前一個程式碼:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim oXL As Excel.Application
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
' Start Excel and get Application object.
oXL = CreateObject("Excel.Application")
oXL.Visible = True
' Get a new workbook.
oWB = oXL.Workbooks.Add
oSheet = oWB.ActiveSheet
' Add table headers going cell by cell.
oSheet.Cells(1, 1).Value = "First Name"
oSheet.Cells(1, 2).Value = "Last Name"
oSheet.Cells(1, 3).Value = "Full Name"
oSheet.Cells(1, 4).Value = "Salary"
' Format A1:D1 as bold, vertical alignment = center.
With oSheet.Range("A1", "D1")
.Font.Bold = True
.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
End With
' Create an array to set multiple values at once.
Dim saNames(5, 2) As String
saNames(0, 0) = "John"
saNames(0, 1) = "Smith"
saNames(1, 0) = "Tom"
saNames(1, 1) = "Brown"
saNames(2, 0) = "Sue"
saNames(2, 1) = "Thomas"
saNames(3, 0) = "Jane"
saNames(3, 1) = "Jones"
saNames(4, 0) = "Adam"
saNames(4, 1) = "Johnson"
' Fill A2:B6 with an array of values (First and Last Names).
oSheet.Range("A2", "B6").Value = saNames
' Fill C2:C6 with a relative formula (=A2 & " " & B2).
oRng = oSheet.Range("C2", "C6")
oRng.Formula = "=A2 & "" "" & B2"
' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
oRng = oSheet.Range("D2", "D6")
oRng.Formula = "=RAND()*100000"
oRng.NumberFormat = "$0.00"
' AutoFit columns A:D.
oRng = oSheet.Range("A1", "D1")
oRng.EntireColumn.AutoFit()
' Manipulate a variable number of columns for Quarterly Sales Data.
Call DisplayQuarterlySales(oSheet)
' Make sure Excel is visible and give the user control
' of Excel's lifetime.
oXL.Visible = True
oXL.UserControl = True
' Make sure that you release object references.
oRng = Nothing
oSheet = Nothing
oWB = Nothing
oXL.Quit()
oXL = Nothing
Exit Sub
Err_Handler:
MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
End Sub
Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)
Dim oResizeRange As Excel.Range
Dim oChart As Excel.Chart
Dim oSeries As Excel.Series
Dim iNumQtrs As Integer
Dim sMsg As String
Dim iRet As Integer
' Determine how many quarters to display data for.
For iNumQtrs = 4 To 2 Step -1
sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
Or vbMsgBoxSetForeground, "Quarterly Sales")
If iRet = vbYes Then Exit For
Next iNumQtrs
' Starting at E1, fill headers for the number of columns selected.
oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
' Change the Orientation and WrapText properties for the headers.
oResizeRange.Orientation = 38
oResizeRange.WrapText = True
' Fill the interior color of the headers.
oResizeRange.Interior.ColorIndex = 36
' Fill the columns with a formula and apply a number format.
oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=RAND()*100"
oResizeRange.NumberFormat = "$0.00"
' Apply borders to the Sales data and headers.
oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin
' Add a Totals formula for the sales data and apply a border.
oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
oResizeRange.Formula = "=SUM(E2:E6)"
With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)
.LineStyle = Excel.XlLineStyle.xlDouble
.Weight = Excel.XlBorderWeight.xlThick
End With
' Add a Chart for the selected data.
oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
oChart = oWS.Parent.Charts.Add
With oChart
.ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)
oSeries = .SeriesCollection(1)
oSeries.XValues = oWS.Range("A2", "A6")
For iRet = 1 To iNumQtrs
.SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
Next iRet
.Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)
End With
' Move the chart so as not to cover your data.
With oWS.Shapes.Item("Chart 1")
.Top = oWS.Rows(10).Top
.Left = oWS.Columns(2).Left
End With
' Free any references.
oChart = Nothing
oResizeRange = Nothing
End Sub
| | 7. | 將下列程式碼新增至 Form1.vb 頂端::
Imports Microsoft.Office.Core
|
測試自動化用戶端| 1. | 按下 F5 以建置並執行程式。. | | 2. | 在表單, 按一下 Button 1 。 這個程式會啟動 Excel 並填入新的工作表上的資料。
| | 3. | 當出現提示要輸入每季的銷售資料, 請按一下 [ 是 ] 。 一個圖表為連結至每季的資料加入至工作表。
|
回此頁最上方
?考 如需詳細資訊,請造訪下列 Microsoft Developer Network (MSDN) 網站::
如需 Excel 和 Visual Basic, 請按一下下列文件編號, 檢視 「 Microsoft 知識庫 」 中的文件中的文件:
219151 (http://support.microsoft.com/kb/219151/)
如何從 Visual Basic Microsoft Excel 自動化
回此頁最上方
這篇文章中的資訊適用於:| ? | Microsoft Visual Basic .NET 2003 Standard Edition | | ? | Microsoft Visual Basic .NET 2002 Standard Edition | | ? | Microsoft Office Excel 2003 | | ? | Microsoft Excel 2002 Standard Edition |
回此頁最上方
| kbpia kbautomation kbhowto KB301982 KbMtzh kbmt |
回此頁最上方
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。如果您發現錯誤,並想要協助我們進行改善,請填寫本篇文章下方的問卷。按一下這裡查看此文章的英文版本: 301982 (http://support.microsoft.com/kb/301982/en-us/) 回此頁最上方
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | Other Support Options- Need More Help?
Contact a Support professional by Email, Online or Phone. - Customer Service
For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more. - Newsgroups
Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.
|
|