Como automatizar o Microsoft Excel a partir do Visual Basic .NET

Traduções de Artigos Traduções de Artigos
Artigo: 301982 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo demonstra como criar uma automatização de cliente para o Microsoft Excel utilizando o Microsoft Visual Basic. NET.

Mais Informação

A automatização é um processo que permite que aplicações estão escritas em linguagens como Visual Basic controlem programaticamente outras aplicações. Automatização para o Excel permite-lhe efectuar acções tais como criar um novo livro, adicionar dados ao livro ou criar gráficos. Com o Excel e outras aplicações do Microsoft Office, praticamente todas as acções que pode executar manualmente através da interface do utilizador também podem ser executadas programaticamente utilizando a automatização.

Excel expõe esta funcionalidade programática através de um modelo de objecto. O modelo de objecto é um conjunto de classes e métodos que servem como correspondentes aos componentes lógicos do Excel. Por exemplo, existe um objecto de aplicação , um objecto de livro e um objecto de folha de cálculo , cada um dos quais contêm a funcionalidade desses componentes do Excel. Para aceder ao modelo de objecto a partir do Visual Basic. NET, pode definir uma referência de projecto à biblioteca de tipos.

Este artigo demonstra como definir a referência de projecto adequada a biblioteca de tipos de Excel para o Visual Basic .NET e fornece código de exemplo para automatizar o Excel.

Criar um cliente de automatização do Microsoft Excel

  1. Inicie o Microsoft Visual Studio NET..
  2. No menu ficheiro , clique em Novo e, em seguida, clique em projecto . Seleccione Aplicação do Windows dos tipos de projecto do Visual Basic. É criado o Form1 por predefinição.
  3. Adicione uma referência objecto do Microsoft Excel biblioteca . Para o fazer, siga estes passos:
    1. No menu projecto , clique em Adicionar referência .
    2. No separador COM , localizar a Biblioteca de objectos do Microsoft Excel e, em seguida, clique em Seleccionar .

      Nota O Microsoft Office 2003 inclui Primary Interop Assemblies (PIAs). Microsoft Office XP não inclui PIAs, mas pode ser transferidos. Para obter mais informações sobre PIAs do Office XP, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
      328912Microsoft Office XP principais interop assemblies (PIAs) estão disponíveis para transferência
    3. Clique em OK no Adicionar referências caixa de diálogo para aceitar as selecções.
  4. No menu Ver , seleccione a caixa de ferramentas para visualizar a caixa de ferramentas e, em seguida, adicione um botão ao Form1.
  5. Faça duplo clique em Button1 . Aparece a janela código para o formulário.
  6. Na janela de código, localize o seguinte código:
        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 para a parte superior do Form1.VB:
    Imports Microsoft.Office.Core
    					

Testar o cliente de automatização

  1. Prima F5 para criar e executar o programa.
  2. No formulário, clique em Button1 . O programa inicia o Excel e preenche dados numa nova folha de cálculo.
  3. Quando for pedido para introduzir dados de vendas trimestrais, clique em Sim . Um gráfico ligado aos dados trimestrais é adicionado à folha de cálculo.

Referências

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

Propriedades

Artigo: 301982 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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