Jak automatizovat aplikaci Microsoft Excel pomocí jazyka Visual Basic

Souhrn

Tento článek ukazuje, jak vytvářet a manipulovat s aplikace Excel pomocí automatizace prostřednictvím jazyka Visual Basic.

Další informace

K ovládání automatizační server dvěma způsoby: pomocí pozdní vazba nebo časná vazba. S pozdní vazbou metody nejsou svázány do běhu a automatizační server je deklarován jako Object. Pomocí časná vazba zná aplikace v době návrhu přesný typ objektu bude komunikovat s a můžete deklarovat objekty jako určitého typu. Tento příklad používá časná vazba, která je považována za lepší ve většině případů vzhledem k tomu, že poskytuje vyšší výkon a lepší bezpečnost typů.

Chcete nejdříve vytvořit vazbu automatizační server musíte nastavit odkaz na knihovnu typů pro daný server. V jazyce Visual Basic lze realizovat prostřednictvím dialogového okna odkazy nalezené v rámci projektu | Nabídka odkazy. Pro tento příklad musíte přidat odkaz na knihovnu typů pro aplikaci Excel, před spuštěním kódu. Jak přidat odkaz naleznete v níže popsané kroky.

Sestavení ukázkové automatizace

  1. Spusťte aplikaci Visual Basic a vytvoření nového projektu standardní EXE. Ve výchozím nastavení je vytvořen formulář Form1.
  2. Klepněte na tlačítkoprojekt a klepněte na tlačítko odkazy. Zobrazí se dialogové okno odkazy. Přejděte v seznamu dolů, dokud vyhledejte Knihovna objektů Microsoft Excela potom vyberte položku, kterou chcete přidat odkaz do aplikace Excel. Pokud správný objekt knihovny pro verzi aplikace Excel nezobrazí v seznamu, ujistěte se, že máte verzi aplikace Excel správně nainstalována.

    Poznámky
    • Při automatizaci aplikace Microsoft Office Excel 2007, zobrazí se knihovny typů jako Knihovna objektů aplikace Microsoft Excel 12.0 v seznamu odkazů.
    • Při automatizaci aplikace Microsoft Office Excel 2003, typ knihovny se zobrazí jako Microsoft Excel 11.0 Object Library v seznamu odkazy.
    • Při automatizaci aplikace Microsoft Excel 2002, zobrazí se jako typ knihovny
      Microsoft Excel 10.0 Object Library v seznamu odkazy
    • Při automatizaci aplikace Microsoft Excel 2000, zobrazí se jako typ knihovny
      Microsoft Excel 9.0 Object Library v seznamu odkazy .
    • Při automatizaci aplikace Microsoft Excel 97, zobrazí se jako typ knihovny
      Microsoft Excel 8.0 Object Library v seznamu odkazy
  3. Klepněte na tlačítko OK zavřete dialogové okno odkazy .
  4. Přidáte CommandButton Form1.
  5. V okně kódu Form1 vložte následující kód:
       Option Explicit   
    Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oWB As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim oRng As Excel.Range


    'On Error GoTo Err_Handler

    ' Start Excel and get Application object.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Get a new workbook.
    Set oWB = oXL.Workbooks.Add
    Set 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 = 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).
    Set oRng = oSheet.Range("C2", "C6")
    oRng.Formula = "=A2 & "" "" & B2"

    ' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
    Set oRng = oSheet.Range("D2", "D6")
    oRng.Formula = "=RAND()*100000"
    oRng.NumberFormat = "$0.00"

    ' AutoFit columns A:D.
    Set 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 Microsoft Excel's lifetime.
    oXL.Visible = True
    oXL.UserControl = True

    ' Make sure you release object references.
    Set oRng = Nothing
    Set oSheet = Nothing
    Set oWB = Nothing
    Set oXL = Nothing

    Exit Sub
    Err_Handler:
    MsgBox Err.Description, vbCritical, "Error: " & Err.Number
    End Sub

    Private Sub DisplayQuarterlySales(oWS As Excel.Worksheet)
    Dim oResizeRange As Excel.Range
    Dim oChart As Excel.Chart
    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


    sMsg = "Displaying data for" & Str(iNumQtrs) & " quarter(s)."
    MsgBox sMsg, vbMsgBoxSetForeground, "Quarterly Sales"

    ' Starting at E1, fill headers for the number of columns selected.
    Set 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.
    Set oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Formula = "=RAND()*100"
    oResizeRange.NumberFormat = "$0.00"

    ' Apply borders to the Sales data and headers.
    Set oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Borders.Weight = xlThin

    ' Add a Totals formula for the sales data and apply a border.
    Set oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
    oResizeRange.Formula = "=SUM(E2:E6)"
    With oResizeRange.Borders(xlEdgeBottom)
    .LineStyle = xlDouble
    .Weight = xlThick
    End With

    ' Add a Chart for the selected data
    Set oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
    Set oChart = oWS.Parent.Charts.Add
    With oChart
    .ChartWizard oResizeRange, xl3DColumn, , xlColumns
    .SeriesCollection(1).XValues = oWS.Range("A2", "A6")
    For iRet = 1 To iNumQtrs
    .SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
    Next iRet
    .Location xlLocationAsObject, oWS.Name
    End With

    ' Move the chart so as not to cover your data.
    With oWS.Shapes("Chart 1")
    .Top = oWS.Rows(10).Top
    .Left = oWS.Columns(2).Left

    End With

    ' Free any references.
    Set oChart = Nothing
    Set oResizeRange = Nothing

    End Sub


  6. Stisknutím klávesy F5 ke spuštění projektu.

Odkazy

Další informace o automatizaci systému Office naleznete na webu Microsoft Office Development podpory na:(c) 1999 Microsoft Corporation, všechna práva vyhrazena. Příspěvky Richard R. Taylor, Microsoft Corporation.

Vlastnosti

ID článku: 219151 - Poslední kontrola: 8. 1. 2017 - Revize: 1

Váš názor