Jak automatizovat aplikaci Microsoft Excel z Visual Basic .NET

Souhrn

Tento článek ukazuje, jak vytvořit klienta automatizace aplikace Microsoft Excel pomocí aplikace Microsoft Visual Basic .NET.

Další informace

Automatizace je proces, který umožňuje aplikacím, které jsou napsány v jazycích, jako je Visual Basic, programově řídit jiné aplikace. Automatizace v aplikaci Excel umožňuje provádět akce, například vytvoření nového sešitu, přidávání dat do sešitu nebo vytváření grafů. A jinými aplikacemi Microsoft Office Excel téměř všechny akce, které lze provést ručně pomocí uživatelského rozhraní lze také provést programově pomocí automatizace.

Aplikace Excel umožňuje tuto programovou funkcionalitu pomocí objektového modelu. Objektový model je kolekce tříd a metod, které slouží jako protějšek logických komponent aplikace Excel. Například je aplikační objekt, objekt a objekt listu , které obsahují funkce těchto komponent, aplikace Excel. Chcete-li přístup k objektovému modelu z jazyka Visual Basic .NET, můžete nastavit projektu odkaz na knihovnu typů.

Tento článek obsahuje ukázkový kód pro automatizaci aplikace Excel a ukazuje, jak nastavit správné projektu odkaz na knihovnu typů v aplikaci Excel pro Visual Basic .NET.

Vytvoření klienta automatizace aplikace Microsoft Excel

  1. Spusťte aplikaci Visual Studio .NET.
  2. V nabídce soubor klepněte na tlačítko
    Novýa potom klikněte na projekt. Vyberte
    Aplikace systému Windows z typů projektu jazyka Visual Basic. Ve výchozím nastavení je vytvořen formulář Form1.
  3. Přidáte odkaz na Knihovna objektů Microsoft Excel. Chcete-li to provést, postupujte takto:
    1. V nabídce projekt klepněte na tlačítko Přidat odkaz.
    2. Na kartě COM vyhledejte
      Knihovna objektů Microsoft Excela potom klepněte na tlačítko
      Vyberte.

      Poznámka: Microsoft Office 2003 zahrnuje primární sestavení Interop (PIA). Microsoft Office XP nezahrnuje sestavení PIA, ale mohou být staženy.
      Další informace o sestaveních PIA sady Office XP klepněte na následující číslo článku databáze Microsoft Knowledge Base:
      328912 Microsoft Office XP primární sestavení interop (PIA) jsou k dispozici ke stažení

    3. Klepněte na tlačítko OK v dialogovém okně Přidat odkazy potvrďte výběr.
  4. V nabídce Zobrazit vyberte
    Panel nástrojů zobrazit v panelu nástrojů a pak přidejte tlačítko do formuláře Form1.
  5. Poklepejte na Button1. Zobrazí se okno kód pro formulář.
  6. V okně naleznete následující kód:
        Private Sub Button1_Click(ByVal sender As System.Object, _      ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

    Předcházející kód nahraďte následujícím kódem:
        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. Přidejte následující kód k horní Form1.vb:
    Imports Microsoft.Office.Core

Testování klienta automatizace

  1. Stisknutím klávesy F5 sestavit a spustit program.
  2. Ve formuláři klepněte na tlačítko Button1. Program spustí aplikaci Excel a vyplní data do nového listu.
  3. Klepněte na tlačítko po zobrazení výzvy zadejte údaje o čtvrtletním prodeji
    Ano. Graf, který je propojen čtvrtletní data je přidán do listu.

Odkazy

Další informace naleznete následujícím webu Microsoft Developer Network (MSDN):
Vývoj sady Microsoft Office s aplikací Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Další informace o aplikaci Excel a Visual Basic klepněte na následující číslo článku databáze Microsoft Knowledge Base:
219151 jak automatizovat aplikaci Microsoft Excel pomocí jazyka Visual Basic

Vlastnosti

ID článku: 301982 - Poslední kontrola: 19. 1. 2017 - Revize: 1

Váš názor