Como automatizar o Microsoft Excel do Visual Basic .NET

Traduções deste artigo Traduções deste artigo
ID do artigo: 301982 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo demonstra como criar uma automação cliente para o Microsoft Excel usando o Microsoft Visual Basic. NET.

Mais Informações

Automação é um processo que permite que aplicativos que são escritos em linguagens como o Visual Basic controle programático de outros aplicativos. Automação para o Excel permite que você execute ações como criar uma nova pasta de trabalho, adicionando dados à pasta de trabalho ou criação de gráficos. Com o Excel e outros aplicativos do Microsoft Office, praticamente todas as ações que você pode executar manualmente por meio da interface do usuário também podem ser executadas por meio de programação usando automação.

Excel expõe esta funcionalidade através de programação através de um modelo de objeto. O modelo de objeto é uma coleção de classes e métodos que servem como correspondentes para os componentes lógicos do Excel. Por exemplo, há um objeto Application , um objeto de pasta de trabalho e um objeto de planilha , cada um deles contém a funcionalidade desses componentes do Excel. Para acessar o modelo de objeto do Visual Basic. NET, você pode definir uma referência de projeto à biblioteca de tipos.

Este artigo demonstra como definir a referência de projeto adequadas à biblioteca de tipo do Excel para o Visual Basic .NET e fornece código de exemplo para automatizar o Excel.

Criar um cliente de automação para o Microsoft Excel

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu arquivo , clique em novo e, em seguida, clique em Project . Selecione Windows Application dos tipos de projeto do Visual Basic. O Form1 é criado por padrão.
  3. Adicionar uma referência ao do Microsoft Excel biblioteca . Para fazer isso, execute as seguintes etapas:
    1. No menu Project , clique em Adicionar referência .
    2. Na guia COM , localize a Biblioteca de objetos do Microsoft Excel e, em seguida, clique em Selecionar .

      Observação Microsoft Office 2003 inclui assemblies de interoperabilidade primários (PIAs). Microsoft Office XP não inclui PIAs, mas podem ser baixados. Para obter mais informações sobre PIAs do Office XP, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
      328912Microsoft Office XP módulos de interoperabilidade primários (PIAs) estão disponíveis para download
    3. Clique em OK na Adicionar referências caixa de diálogo para aceitar as seleções.
  4. No menu Exibir , selecione a caixa de ferramentas para exibir a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
  5. Clique duas vezes em Button1 . A janela de código para o formulário é exibida.
  6. Na janela código, localize o código a seguir:
        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub
    					
    substituir o código anterior com o seguinte código:
        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. Adicione o seguinte código à parte superior do Form1.vb:
    Imports Microsoft.Office.Core
    					

O cliente de automação de teste

  1. Pressione F5 para criar e executar o programa.
  2. No formulário, clique em Button1 . O programa inicia o Excel e preenche os dados em uma nova planilha.
  3. Quando você for solicitado para inserir dados de vendas trimestrais, clique em Sim . Um gráfico é vinculado aos dados trimestrais é adicionado à planilha.

Referências

Para obter mais informações, visite o seguinte site da Microsoft Developer Network (MSDN):
Microsoft Office Development com Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Para obter mais informações sobre o Excel e o Visual Basic, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
219151Como automatizar o Microsoft Excel a partir do Visual Basic

Propriedades

ID do artigo: 301982 - Última revisão: quinta-feira, 29 de março de 2007 - Revisão: 8.3
A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
Palavras-chave: 
kbmt kbpia kbautomation kbhowto KB301982 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 301982

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com