您目前已離線,請等候您的網際網路重新連線

如何自動化 Microsoft Excel 從 Visual Basic.NET

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:301982
本文已封存。本文係以「現狀」提供且不會再更新。
結論
本文將告訴您如何建立一個自動化的 Microsoft Excel 使用 Microsoft Visual Basic.NET 的用戶端。
其他相關資訊
自動化是允許以如 Visual Basic 來以程式設計方式控制其他應用程式的語言撰寫的應用程式的程序。自動化 Excel 可以讓您執行動作,例如建立新的活頁簿、 將資料加入至活頁簿或建立圖表。與 Excel 和其他 Microsoft Office 應用程式,幾乎所有您可以透過使用者介面以手動方式執行的動作也可執行以程式設計方式使用自動化。

Excel 會公開物件模型透過這個程式設計功能。物件模型是 Excel 的類別和方法,可做為副本邏輯元件的集合。比方說是 Excel 的一個 應用程式 物件]、 [活頁簿 物件] 和 [每一個都包含這些元件功能將 工作表 物件。若要從 Visual Basic.NET 中存取物件模型,您可以設定型別程式庫的專案參考。

本文中,示範了如何設定適當的專案參考加入 Excel 的型別程式庫的 Visual Basic.NET,並提供範例程式碼來自動化 Excel。

建立如 Microsoft Excel 的自動化用戶端

  1. 啟動 Microsoft Visual Studio.NET。
  2. 在 [檔案] 功能表上按一下 [新增],然後按一下 [專案]。選取的 Windows 應用程式,從 Visual Basic 專案類型。預設會建立 Form1。
  3. 將參考加入至 Microsoft Excel 物件程式庫。要這麼做,請您執行下列步驟:
    1. 在 [專案] 功能表上按一下 新增參考
    2. 在 [COM] 索引標籤上找不到 Microsoft Excel 物件程式庫,然後按一下 [選取]。

      附註Microsoft Office 2003 包括主要 Interop 組件 (PIA)。 Microsoft Office XP 並不包含 PIA,但是他們可以下載。 如需有關 Office XP PIA,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
      328912Microsoft Office XP 主要 Interop 組件 (PIA) 是可供下載
    3. 按一下 [確定]新增引用項目 接受您的選取項目] 對話方塊。
  4. 在 [檢視] 功能表上選擇 [工具箱],以顯示 [工具箱],然後再新增到 Form1 的 [按鈕]。
  5. 連按兩下 [Button1]。在表單的 [程式碼] 視窗隨即出現。
  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 SubErr_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. 在表單上按一下 [Button1]。程式啟動 Excel,並且會填入新的工作表上的資料。
  3. 當提示您輸入每季的銷售資料時,按一下 [是]。連結至每季資料的圖表新增至工作表。
参考
如需詳細資訊請造訪下列 Microsoft 開發人員網路 (MSDN) 網站]:
與 Visual Studio 的 Microsoft Office 程式開發
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
如需有關 Excel 和 Visual Basic,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
219151如何自動化 Microsoft Excel 從 Visual Basic
xl2003 automating 自動化自動化 createobject

警告:本文為自動翻譯

內容

文章識別碼:301982 - 最後檢閱時間:12/06/2015 03:28:07 - 修訂: 8.3

Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbpia kbautomation kbhowto KB301982 KbMtzh
意見反應